パーソナル化可能情報ネットワーク(personalizable information network)用のソフトウェアファシリティ(「ファシリティ」)について説明する。パーソナル化可能情報ネットワーク(「PIN」)は、1つまたは複数のコレクションを含む。コレクションは、情報アイテムが格納されている場所を必ずしも知っていなくても情報アイテムをユーザ側で特定し、取り出せるように様々なネットワーク接続ロケーションから集められた参照(例えば、ドキュメントへのリンク)または情報アイテムを含む。情報アイテムは、統一リソースロケータ(URL)を使用するなどして、一意的に識別されうるドキュメント、Webページ、電子メールメッセージ、データベース中の行またはフィールドなどの情報源である。情報アイテムは、サーバ、電子メールシステム、ファイルフォルダ、データベース、クライアントまたはサーバコンピューティングデバイスに関連付けられているリポジトリなどの、ファシリティによりアクセス可能な任意の場所にデジタル形式で格納することができる。情報アイテムを識別するURLにより、ドキュメントまたはWebページ内の一部分またはロケーションを識別することができる。様々な実施形態において、ファシリティは、最新バージョンの情報アイテムを整理された形でユーザに提供する。このファシリティを使用することで、ユーザ(「作成者」)は、異種の記憶媒体から情報を集め、集められた情報の分配のため他のユーザ(「受信者」)を識別し、集められた情報を受信者と共有することができる。記憶媒体は、例えば、電子メール記憶装置、ファイルシステム、インターネット、インスタントメッセージング、データベースなどのサーバまたはクライアントコンピューティングデバイスを含むネットワーク接続デバイスを含むことができる。作成者は、情報および受信者が情報に入れることができるアクションへのアクセスを制御することができる。情報は、作成者、受信者、または他のユーザにより整理または再編成されることができる。作成者は、情報を複数の受信者と共有し、情報を配布すべき受信者のリストを指定し、共有された情報または受信者のいずれかに関連付けられているアクセス制御属性(例えば、許可または特権)を設定することができる。作成者が、受信者に対し十分な許可を与えている場合、受信者は、集められた情報に関係する他のアクションを表示するか、または付加するか、または修正するか、または取り出すことができる。こうしてファシリティは情報のパーソナル化可能ネットワークを形成する。
このファシリティを使用することで、ユーザは、情報アイテムの潜在的集合を識別し、ユーザが共有することを望んでいる情報アイテムのコレクションを構成するための検索条件を指定することができる。コレクションは、検索により識別されなかった追加の情報アイテムを含むことができる。ユーザから検索条件の指示を受け取った後、ファシリティは、検索プロバイダを利用して、複数のデータソースから検索条件に一致する情報アイテムを特定する。ファシリティは、複数の「検索プロバイダ」にまたがって「メタ検索」を実行する。メタ検索は、様々な情報リポジトリおよび情報源にまたがって実行されうる検索であり、その後、見つかった情報は、共通フォーマットで一緒に提供されうる。検索プロバイダは、1つまたは複数の情報リポジトリを使用して検索を実行するサービスである。例えば、ファシリティは、GOOGLE SEARCH、MICROSOFT SEARCH、または検索技術の任意のプロバイダまたはそれらの組合せを使用することが可能である。他の実施例では、ユーザは、GOOGLE Internet検索およびMICROSOFTデスクトップ検索を使用するようにファシリティを構成することができる。他の実施例では、ファシリティは、インターネット(または他の)ニュースフィード、Webログ(「ブログ」)、データベース、コンピュータファイルシステム、ドキュメント管理システムなど、様々なデータソース内の情報を特定する検索プロバイダを使用することができる。情報アイテムは、インターネット、イントラネット、または電子メールサーバ、クライアントコンピューティングデバイスなど、検索プロバイダがアクセスできる任意のロケーションに接続されているコンピューティングデバイスまたは記憶装置デバイス内に配置することができる。このファシリティは、さらに、様々なデータ型を検索する検索プロバイダも使用することができる。検索プロバイダは、ファシリティまたは他のアプリケーションが複数の結果フォーマットで機能する必要のないように「統一された」ビューに結果を表示することができる。検索プロバイダは、コンピューティングデバイスに関連して任意の場所に配置することができ、例えば、実行可能ファイルとして記憶装置内に置くか、または添付として電子メールメッセージ内に入れるか、またはインターネットに置くことができる。ファシリティは、自動的に、またはユーザの指令の下で、検索プロバイダを特定し、使用することができる。いくつかの実施形態では、検索プロバイダは、URLにより識別される。例えば、ファシリティは、URLにより識別された検索プロバイダを利用して、URLを伴うクエリに基づいて情報を取り出すことができる。
ファシリティにより関連する情報アイテムが特定された後、ファシリティは処理エンジンを使用して特定された情報アイテムを処理する。処理エンジンは、特定された情報アイテムの「抜粋」を作成する。抜粋は、情報アイテムの一部である。例えば、抜粋は、情報アイテムのタイトル、説明、および電子メール送信者、受信時刻、連絡先電話番号などのスキーマ特有のプロパティを含むことができる。抜粋は、様々な種類の情報アイテムに適切なスキーマを使用して格納される。例えば、処理エンジンは、MICROSOFT WORDドキュメント内に格納されている情報のドキュメントスキーマ内に抜粋を作成することができるが、データベースに格納されている情報についてはデータベーススキーマ内に抜粋を作成することができる。このファシリティは、様々な種類のドキュメントに類似のスキーマを使用することができる。抜粋は、リッチサイトサマリーまたはリアリーシンプルンジケーション(一般に「RSS」と呼ばれる)などの標準ドキュメント定義形式またはATOMまたはアウトラインプロセッサマークアップ言語などのRSSの一般的に認められている代替えを参照しつつ定義することができる。様々な実施形態において、スキーマは、拡張マークアップ言語(「XML」)で指定される。例えば、ファシリティは、RSSを使用してドキュメント抜粋を定義し、異なるXMLスキーマを使用してデータベース抜粋を定義することができる。抜粋は、関連すると識別されている情報アイテムから取り出した属性を与える。例えば、電子メール情報アイテムの抜粋スキーマは、送信者の名前、受信者の名前、および件名属性が関連していることを示しうる。他の実施例では、連絡先抜粋スキーマは、名前、電話番号、および電子メール属性が関連していることを示しうる。ファシリティは、抜粋を使用して、情報アイテムからの情報を表示するときに、関連情報を表示することができる。そのため、抜粋を使用することにより、ファシリティは、一意的な情報アイテム型に基づいてリッチユーザインターフェースを生成することができる。
ファシリティが情報アイテムに関係する情報を表示結果ページに表示する場合には必ず、情報アイテムからの情報を利用することができる。ユーザが、リンクを選択するなどして情報アイテムをロードすると、ファシリティは、元のロケーションまたはキャッシュ記憶装置のいずれかから情報アイテムをロードする。ファシリティは、情報アイテムを組み合わせて、ピンボードコレクションを作成する。ピンボードコレクションは、情報アイテムを含み、URLを介してアクセスできる。URLを介してピンボードコレクションがアクセスされる場合、ファシリティは、ビュー記述を使用するピンボードコレクションを表示結果ページに変換する。ビュー記述は、ピンボードコレクションを、人が読める表示結果ページに変換する方法に関する命令を与えるものである。例えば、ビュー記述は、拡張スタイルシート言語(「XSL」)、アクティブスクリプトページ(「ASP」)などを使用して指定することができる。表示結果ページでは、それぞれの情報アイテムに関するデータを情報アイテムに関連するある種のデータとともに識別する。例えば、表示結果ページには、リンク、ドキュメントのタイトル、ドキュメントに含まれるテキストの最初の数行、ドキュメントが作成された日付などを用意することができる。表示結果ページには、さらに、作成者または受信者により追加される、ドキュメントに関係する注釈も用意することができる。注釈は、ユーザが情報アイテムに関連付ける情報である。注釈の実施例は、テキストコメント、ハイライト表示、および音声(またはビデオ)コメントなどのテキスト、書式設定、およびマルチメディアを含む。注釈は、短くても(例えば、いくつかの単語または語句)、長くてもよい(例えば、センテンス、パラグラフ、ドキュメント全体、または他の情報アイテムの識別子)。ファシリティは、表示結果ページに含まれる情報を共有または他の何らかの形で利用するときに、RSSまたは他のフォーマットで格納することができる、基礎となるピンボードコレクションを使用または操作することができる。
表示結果ページを作成した後、次いで、作成者は、クエリに対する応答として検索プロバイダにより指示された情報アイテムの部分集合を識別することができる。例えば、ファシリティが、複数の情報アイテムを識別する場合、作成者は、本当に関連性がある情報アイテムの部分集合を識別し、無関係と思われる残りの情報アイテムを削除する(または他の何らかの方法で識別する)ことができる。作成者は、さらに、表示結果ページを再編成し、それにより、ファシリティは、表示される情報の順序を変更するなど、基礎となるピンボードコレクションを再編成し、重要な情報アイテムが重要度の劣る情報アイテムの前に表示されるようにできる。作成者は、複数の検索を実行し、情報アイテムをピンボードコレクションに追加する作業を継続することができる。
作成者は、次いで、作成者が作成された表示結果ページの共有相手にしたい受信者を識別することができる。作成者は、電子メールの受信者を選択するのと類似の方法で受信者を識別することができる。例えば、作成者は、アドレス帳に載っている受信者または受信者のグループを識別すること、受信者の名前または識別子の一部を入力すること、例えば、受信者の識別を完成させることにより受信者の名前または識別子をファシリティに「解決」するよう要求することなどを行うことができる。
作成者は、さらに、ピンボードコレクションの様々な属性を追加または修正することもできる。例えば、作成者は、全体として個別の情報アイテムまたはピンボードコレクションに関係する、メッセージなどの注釈を追加することができる。他の実施例として、作成者は、情報アイテムをハイライト表示すること、または何らかの尺度に基づいて情報アイテムを格付けすること、または「親指を立てる」メタファーを使用することなどにより、特に注目している情報アイテムを指示することができる。他の実施例として、作成者は、今後の変更が共有されないように共有されている特定のバージョンの情報アイテムを「ロック」することができる、作成者は、アイテムに対する様々なアクセス方法を指示することができる、例えば、他のユーザとそれ以上共有することができない、今後は自由に共有することができる、元の情報アイテムを修正することができる、などが考えられる。
作成者が、表示結果ページのユーザインターフェース上の「share」ボタンを選択するなどして、ピンボードコレクションを受信者と共有した後、受信者は、受信者のアクセス権に応じてピンボードコレクションで識別されている情報アイテムを表示することができる。アクセス権により、view、edit、delete、shareなどの、情報アイテムまたはピンボードコレクションに関して受信者が実行できるアクションを指定する。ファシリティは、以下でさらに詳しく説明されるように、適切なアクセス権を受信者に付与する。
受信者は、受信されたピンボードコレクションに応答し、そのレスポンスを作成者または他の受信者と共有することができる。受信者は、レスポンスを共有する前に受信されたピンボードコレクションの様々な属性を追加または修正することができる。例えば、受信者は注釈を追加することができる。作成者が、十分なアクセス権を与える場合、受信者は、受信されたピンボードコレクションを共有することができる。受信者は、さらに、検索を実行し、見つかった情報アイテムをピンボードコレクションに追加することもできる。作成者は、受信者により行われた追加、削除、または修正を自動または手動のいずれかにより受理または拒絶することができる。
作成者または受信者がピンボードコレクションを修正した場合、ユーザは、最新の修正バージョンを見ることができる。これは、表示結果ページが、表示のため閲覧者(例えば、受信者)が表示結果ページをロードしたときに生成されるため可能である。ピンボードコレクションに含まれる参照および他の情報は、作成者および受信者により修正されうる(受信者が十分なアクセス権を有している場合)。ユーザが表示結果ページをロードすると、ファシリティは、表示結果ページの最新バージョンを提供する。そのため、ユーザは、それらがドキュメントの最新バージョンを共有しているか、または表示しているかを知る必要がない。
ユーザは、ピンボードコレクションまたは1つまたは複数の情報アイテムを「ロック」することができる。アイテム(例えば、ピンボードコレクションまたは情報アイテム)がロックされた場合、ロックされたアイテムを表示するユーザには、ロックの後に行われた更新が見えない。これを遂行するために、ファシリティは、情報アイテムの格納バージョンを使用する。ユーザは、アイテムをロックした場合、アイテムの更新を続けることができる。次いで、ユーザがアイテムのロックを解除すると、ユーザの更新は、他のすべてのユーザから見えるようになる。ファシリティは、ロックおよび更新の監査証跡を作成することができる。
作成者または受信者は、検索語を繰り返し追加することにより検索を精密化することができる。その結果得られるピンボードコレクションは、複数のデータソースまたはデータ型からの情報を表す情報アイテムを1つの場所に収める。
ピンボードコレクションおよび情報アイテムを参照しつつファシリティが本明細書で説明されているが、ファシリティは、様々な環境およびアプリケーションに容易に適応できるプラットフォームを備え、その一部について本明細書では説明する。
次に、ファシリティの特徴について、さらに詳しく説明する。
パーソナル化可能情報ネットワークの作成および使用
様々な実施形態において、ファシリティが備えるユーザインターフェースは、テキストボックスおよび「search」ボタンを含む。ユーザは、文字列を入力するなどによりテキストボックスにクエリを入れ、そのクエリと一致する情報アイテム(例えば、ドキュメント)の検索をファシリティに開始させるsearchボタンを選択する。
様々な実施形態において、ファシリティは、同期的に、または非同期的に、複数の検索プロバイダを同時にまたは同時実行的に使用し、情報アイテムを特定することができる。例えば、ファシリティは、GOOGLEインターネット検索、MICROSOFTデスクトップ検索、ポータル検索ファシリティ、WINDOWS(登録商標)デスクトップ検索ファシリティ、ネットワーク検索ファシリティ、データベース検索ファシリティ、横断検索ファシリティ、インターネット検索ファシリティなどを使用して検索することができる。様々な実施形態において、ファシリティは、サードパーティ製検索プロバイダをユーザが追加することを可能にする拡張性機構を有する。検索プロバイダの追加を可能にすることで、ファシリティは任意の形態および任意のロケーションに格納されている情報アイテムを検索することができる。呼び出された検索プロバイダはそれぞれ、検索の結果をファシリティに返す。
作成者は、検索プロバイダの一部または全部をアクティブ化するなどして、複数の検索プロバイダのうちどれを使用するかを指定することができる。ファシリティは、検索する際に、非アクティブ状態の検索プロバイダを呼び出すことはできない。作成者は、ある1つのピンボードコレクションについては検索プロバイダをアクティブ化し、他のピンボードコレクションについては、その検索プロバイダを非アクティブ化することができる。これ以降、ファシリティは、ピンボードコレクションのそれぞれに対しアクティブな検索プロバイダのみを使用することができる。作成者は、さらに、検索プロバイダの既定のリストを(例えば、検索プロバイダを「ピン止め」することにより)ピンボードコレクションに関連付けることもできる。作成者は、さらに、そのピンボードコレクションに関する新規クエリについてピンボードコレクションから他の検索プロバイダを発見し、有効にすることもできる。適宜、使用される検索プロバイダは、ピンボードコレクションにピン止めすることにより集合として格納することができる。検索プロバイダは、さらに、特定のクエリについて無効にすることもできる。
ファシリティは、最初に、既定のレイアウトに従って表示結果ページ内の検索の結果を整理する。レイアウトは、フォント、色、ロケーション、背景などのプレゼンテーション属性を示す。ユーザは、既定のレイアウトを修正することができる。様々な実施形態において、既定のレイアウトは、XMLで指定される。
次に図を参照すると、図1は、様々な実施形態におけるファシリティにより提供される表示結果ページを例示する表示画面である。ファシリティは、ピンボードコレクションを作成するために作成者が使用できる表示結果ページ100を備えている。表示結果ページは、ロゴなどの画像用の領域102、および結果として得られるピンボードコレクションのタイトルを示すための領域104を含む。表示結果ページは、作成者が検索クエリを入力することができるテキスト領域106を含む。次いで、作成者は、searchボタン108を選択して検索を開始することができる。それとは別に、clearボタン110を選択して、検索プロバイダにより表示結果ページに追加されたすべての情報を消去することができる。
例示されているディスプレイ画面は、作成者が「Sales pitch」をクエリとしてテキスト領域106に入力したことを示している。searchボタン108がクリックされた後、ファシリティは、クエリ「Sales pitch」と一致する情報アイテムを特定し、検索ページの様々な結果領域を検索の結果で埋める。例示されている表示結果ページは、ピンボードコレクション結果領域112、related pinboards結果領域113、e−mail結果領域114、appointments結果領域116、およびdocuments結果領域118を示している。
ピンボードコレクション結果領域112には、クエリと一致するピンボードコレクションのリストが表示される。例示では、クエリと一致するピンボードコレクションはなく、したがって、リストにされているピンボードコレクションもない。ピンボードコレクションは、表示結果ページのクエリにより他のピンボードコレクションにピン止めされている情報アイテムが得られるときにクエリと一致しうる。さらに、ファシリティは、結果領域の1つに示されている情報アイテムのピン止め先とすることができる他のピンボードコレクションのリストを表示することができる。これにより、ユーザは、情報アイテムのコンテンツおよび関連性を素早く決定することができる。
related pinboards結果領域113には、表示されているピンボードコレクションに関係するピンボードコレクションのリストが表示される。2つのピンボードは、例えば、一方が他方に応じて作成されたか、または両方とも同じ情報アイテムを参照しているか、または関係しているとユーザにより指示されているか、またはピンボードコレクションの一方が他方にピン止めされているために関係していることがある。
e−mail結果領域114には、クエリと一致する電子メールメッセージのリストが表示される。電子メールメッセージは、その電子メールメッセージがクエリと一致するテキストまたは他の属性を含んでいる場合にクエリと一致するとしてよい。e−mail結果領域には、送信者、件名、および送信日または時刻などの、クエリと一致する電子メールメッセージに関係する様々な属性を表示することができる。
appointments結果領域116には、クエリと一致するアポイントメントのリストが表示される。documents結果領域118には、クエリと一致するドキュメントのリストが表示される。様々な実施形態において、ファシリティは、例示されている結果領域の代わりに、またはそれに加えて他の結果領域を表示することができる。
結果領域内にリスト表示されるそれぞれの情報アイテムは、チェックボックス120などの選択インジケータを伴う。作成者は、結果領域内にリスト表示されている情報アイテムの部分集合を選択し、作成者がピンボードコレクション内に保持することを望んでいるそれぞれの情報アイテムに関連付けられているチェックボックスを選択することなどにより、ピンボードコレクションに加えることができる。このアクションは、「ピン止め」と一般に呼ぶことができる。そのため、ファシリティを使用することで、ユーザは、チェックボックスを選択することなどにより、単一アクションを使用して検索結果をドキュメントに追加することができる。チェックボックスは、ユーザがオーサリングモードに入っていない場合には表示できない。
結果領域内にリスト表示されるそれぞれの情報アイテムは、テキスト領域122などのテキスト領域を伴うこともできる。作成者は、情報アイテムに関係する注釈をテキスト領域内に追加することができる。例えば、作成者は、図中の締め切り済み取引に関係する電子メールに関連付けられている注釈「Good example」をテキスト領域に追加している。
様々な実施形態において、ファシリティは、抜粋(例えば、抜粋のスキーマに含まれるデータ)を使用して、結果領域に書き込む。例えば、ファシリティは、電子メールの抜粋を使用して、電子メール結果領域に書き込むことができる。
アプリケーションの表示結果ページまたは他のユーザインターフェース要素は、さらに、そのクエリで見つからなかった追加情報アイテムを作成者が追加するオプションを備えることができる。例えば、検索ページに、addボタン124を備えることができる。addボタンを選択することにより、作成者は、添付を電子メールメッセージに追加するのと類似の方法で追加の情報アイテムを指定することができる。ファシリティは、さらに、アプリケーションにより識別された情報アイテムをピンボードコレクションにピン止めするためのアプリケーションプログラムインターフェース(API)も備える。このAPIを使用することで、他のアプリケーション(例えば、MICROSOFT WORD)は、ネイティブドキュメントをピンボードコレクションに直にピン止めするためのユーザインターフェースを実装することができる。例えば、MICROSOFT WORDのツールバーに、「Pin」ボタンとドキュメントをピン止めできる許可をユーザが修正したピンボードコレクションのリストを表示するドロップダウンリストを持たせることが可能である。このボタンを選択すると、アクティブなMICROSOFT WORDドキュメントは、選択されたピンボードにピン止めされる。他の実施例では、ユーザは、情報アイテムを選択して、その情報アイテムを他のピンボードコレクションにピン止めすることができる。
様々な実施形態において、ファシリティは、ピンボードコレクション用のオーサリングモードを備える。表示結果ページが編集モードになっている場合、ユーザは、注釈を追加する、検索アイテムをピン止めするといったことを実行することができる。ファシリティが、ピンボードコレクションを作成者が共有したときなどに編集モードを終了すると、ユーザは、もはや、情報アイテムの注釈を作成したり、ピン止めしたりすることができなくなる。様々な実施形態において、いくつかの編集機能は、オーサリングモードを終了した後に利用可能にすることができる。
様々な実施形態において、ファシリティを使用することで、受信者は、他の検索プロバイダを使用することに加えて、ピンボードコレクションに関連付けられている情報アイテム内で検索を実行することができる。例えば、受信者がクエリ「sales pitch」でピンボードコレクションを受け取ると仮定する。次いで、受信者は、そのピンボードコレクション内の情報アイテム内で「Jane」を検索して、「Jane」に関連付けられている情報アイテムを特定することができる。この追加の検索の結果として見つかった情報アイテムは、グループにまとめることができるが、ピンボードコレクション内に現れる他の情報アイテムは、別にグループ化することができる。
図2は、様々な実施形態におけるファシリティにより提供される表示結果ページを例示する表示画面である。例示されている表示結果ページ200は、図1に例示されている表示結果ページ100に類似しているが、図1とは異なり、アドレスルックアップボタン202、アドレステキスト領域204、shareボタン206、およびsaveボタン208をさらに備えている。
アドレスルックアップボタン202は、作成者によって選択され、これにより、作成されたピンボードコレクションに対する受信者のリストを選択することができる。例えば、ファシリティでは、MICROSOFT ACTIVE DIRECTORY、電子メールサーバに対応するグローバルアドレスリスト、個人連絡先リスト、または受信者のディレクトリを使用することができる。様々な実施形態において、ファシリティは、受信者に関係するアクセス権を示す機能を含む、受信者を選択するためのユーザインターフェースを備えることができる。アクセス権について、以下でさらに詳しく説明する。
ファシリティは、アドレステキスト領域204に選択された受信者のリストを表示することができる。ファシリティは、アドレステキスト領域を使用してユーザから受信者のリストを受け取ることもできる。図では、Brian Beanが受信者として選択されている。
作成者は、shareボタン206を選択して、作成されたピンボードコレクションを指示された受信者と共有することができる。作成者は、saveボタン208を選択して、ピンボードコレクションを、受信者と共有するのではなく保存することができる。
様々な実施形態において、ファシリティは、チェックボックス120を選択することなどにより、作成者がいくつかの情報アイテムを選択したときに図2に関して上で述べたユーザインターフェース要素を追加することができる。他の実施形態では、ファシリティは、検索ページ100を表示するときにこれらのユーザインターフェース要素を備えることができる。さらに他の実施形態では、ファシリティは、アクションがメニュー内に現れることに応答するなどして、作成者により要求されたときにこれらのユーザインターフェース要素を備えることができる。
図3は、様々な実施形態におけるファシリティにより提供される表示結果ページを例示する表示画面である。このディスプレイ画面の図は、作成者により共有され、作成者(例えば、Brian Bean)によって選択された受信者が受け取った表示結果ページ300を例示している。例示されている表示結果ページは、表示結果ページ200に現れる結果の一部を欠いており、さらにピンボードコレクション結果302、ピンインジケータ304、および二次ピンボードコレクションインジケータ306を示すことを除き、図2に例示されている表示結果ページ200に類似している。例示されている表示結果ページは、チェックボックスなど、オーサリング機能がないことにより示されるように、オーサリングモードになっていない。様々な実施形態において、他の機能を追加または削除することができる。例えば、様々な実施形態において、「To...」ボタン、「Share...」ボタン、および「Save...」ボタンを削除することができる。
チェックボックスを選択すると、例示されている表示結果ページは、作成者がピン止めしていなかった情報アイテムを表示しない。例えば、Jim Jonesからの電子メールは、作成者によって選択されていないため、表示結果ページに現れない。同様に、「Lunch with John」アポイントメントおよび「Objectives」ドキュメントは、表示結果ページに表示されない。
例示されているピンボードコレクション結果領域112には、ピンボードコレクション結果302が入る。様々な実施形態において、すでに格納されている、または受け取ったピンボードコレクションにリストされている情報アイテムも表示されている表示結果ページに関連付けられているピンボードコレクションのクエリに適しているとファシリティが判断した場合に、追加のピンボードコレクション結果のリストが表示される。さらに、図1に関して上ですでに述べているように、表示結果ページは、ピンボードコレクションのリストをそれらのピンボードコレクションがクエリに関連している場合に表示することが可能であり、これらのピンボードコレクションは、さらに、作成者により選択された場合にピンボードコレクション結果内にも表示される。そのため、ファシリティは、ピンボードコレクションを組み合わせる、つまり「入れ子にする」ことができる。
ピンインジケータ304は、ピンボードコレクションを作成するときに作成者により選択された(例えば、「ピン止め」された)情報アイテムの指示を受信者に与える。ピンボードコレクションは、動的に作成されるため、追加の情報アイテムは、表示結果ページ内に表示できるが、これらは関連するピンインジケータを持たない。したがって、受信者または作成者は、ピン止めされた情報アイテムをファシリティにより動的に追加された他の情報アイテムからたちどころに区別することができ、これにより、ユーザは、どの情報アイテムがより高い関連性を有するか、またはどの情報アイテムが「新しい」かをすぐに判定することができる。様々な実施形態において、ファシリティは、ピン止めされた情報アイテムをグループにまとめ、他の情報アイテムを他のグループにまとめる。そのため、単一のピンボードコレクションを使用して、フィルタ処理された情報アイテム集合をピンボードコレクションのクエリに一致する追加の情報アイテムと組み合わせることができる。さらに、複数の検索プロバイダ(元のピンボードコレクション自体を含む)は、アイテム検索に関係する情報を提供することができる。この情報は、重複情報を含まずにピンボードコレクションに表示するために単一情報に圧縮することができる。例えば、一方の検索プロバイダは、アイテムのタイトルおよび説明を提供するが、他方の検索プロバイダは、特定のユーザの注釈を供給することができる。表示される情報アイテムは、タイトル、説明、および注釈を示す。そのため、ファシリティは、情報アイテムが複数のソースからの情報を含む機能を備える。ファシリティは、情報アイテムのクエリを実行し、一意的な属性を保存し、重複する属性を削除することにより「オーバーレイ」を作成することができる。
二次ピンボードコレクションインジケータ306は、ピンボードコレクション結果領域にリスト表示されているピンボードコレクションに関連付けられている情報アイテムを示す。ユーザがピンボードコレクション結果を選択すると、ファシリティは、対応するピンボードコレクションインジケータを切り換える。いくつかの実施形態では、ユーザがピンボードコレクション結果を選択したときに、ファシリティは、選択されたピンボードコレクション結果に関連付けられている情報アイテムを結果領域に表示させる。例えば、「Deals」ピンボードコレクション結果は、例示されている実施形態において示されているピンボードコレクション結果領域内に表示される。Dealsピンボードコレクション結果の左にある記号(この実施形態では丸で囲まれたマイナス記号)は、ピンボードコレクション結果に関連付けられている情報アイテムが二次ピンボードコレクションインジケータとともに示されることを意味する。例えば、Jane Adamsからの電子メールは、二次ピンボードコレクションインジケータに関連付けられている。ユーザがこのピンボードコレクション結果を選択した場合、異なる記号がピンボードコレクション結果の左に表示されうる。例えば、例示されている実施形態では、プラス記号が表示されうる。ピンボードコレクション結果が切り換えられたときに、ファシリティは、二次ピンボードコレクションインジケータを削除することができる。例えば、ファシリティは、Jane Adamsからの電子メールに関連付けられている二次ピンボードコレクションインジケータを削除することができる。様々な実施形態において、テキスト領域106およびsearchボタン108は、ドキュメントのキャンパス内に表示される(例えば、検索結果と同じウィンドウペイン内)。
様々な実施形態において、ピンボードコレクションは、さらに、他の情報アイテムを表示することができる。例えば、ピンボードコレクションは、作成者または他の受信者により追加されたアイテムを表示することができる。ユーザは、一領域を「折り畳む」などによりそのようなアイテムを表示から一時的に削除することができる。ユーザは、例えば、最小化または非表示ボタン(図に示されていない)を選択することにより、領域を折り畳むことができる。
したがって、検索結果は、「文脈で」表示されるが、これは、ユーザがピンボードコレクションなどのドキュメントに検索エントリを追加するために他のアプリケーションまたはウィンドウを開く必要がないことを意味する。
作成者がピンボードコレクションを受信者と共有する場合、受信者は、ピンボードコレクションの通知を受け取ることができる。例えば、受信者は、電子メールを介して共有ピンボードコレクションの指示を受け取ることができる。電子メールは、ピンボードコレクションに対応するリンクまたはURLを含むことができる。受信者がリンクを選択すると、ファシリティは、インターネットブラウザなどに、ピンボードコレクションに対応する共有表示結果ページを表示する。表示される表示結果ページは、作成者がピン止めしたすべての情報アイテムを含む。表示される表示結果ページは、さらに、作成者がピンボードコレクションを共有した相手であるすべての受信者の指示も与えることができる。
表示結果ページは、関連付けられたピンボードコレクションを使用することにより表示されたときに動的に値を埋められる。そのため、作成者がピンボードコレクションを作成した後でも、ピンボードコレクションの作成者(または受信者)の更新は、常に受信者から利用可能である。その結果、作成者は、受信者と共有されたピンボードコレクションに関連付けられている情報アイテムを追加、削除、または修正することができる。
受信者は、受信されたピンボードコレクションを他の受信者と共有することができる。受信者が表示結果ページを他の受信者と共有できるかどうかは、以下でさらに詳しく説明されるように、作成者により制御される。受信者がピンボードコレクションを他の受信者と共有する場合、ファシリティは、従来の電子メールシステムと異なり、他のユーザに対する表示結果ページまたはそのコンテンツを複製しない。その代わりに、表示結果ページは、下流の受信者が表示結果ページを開いたときに動的に再作成される。
受信者が、表示結果ページに現れる情報アイテムに関連付けられているリンクを選択すると、選択された情報アイテムに関連付けられているソフトウェアアプリケーションが呼び出される。次いで、ソフトウェアアプリケーションは、対応する情報アイテムをロードして表示する。例えば、表計算ソフトウェアがピンボードコレクションにリンクされている場合、表計算ソフトウェアアプリケーションは、リンクされている表計算ソフトウェアを開く。
アクセスの制御
受信者がピンボードコレクションに表示される情報アイテムへのアクセス権を有するかどうかは、多数の要因により決まる。第1に、ピンボードコレクションへのアクセスは、ピンボードコレクションの作成者により制御されうる。すでに述べたように、ピンボードコレクションの作成者は、ピンボードコレクションに関連付けられている特権を指定することができる。例えば、作成者は、ピンボードコレクションの受信者がピンボードコレクションを他のユーザと共有できることを示すことができる。それとは別に、作成者は、受信者がピンボードコレクションを他の受信者と共有できないことを示すことができる。ピンボードコレクションの作成者が、ピンボードコレクションを受信者が共有することを許可している場合、他の受信者からピンボードコレクションを受け取る受信者(「下流の受信者」)は、アクセス権が与えられた情報アイテムを表示することのみできる。
第2に、受信者は、ファイルシステム、データベース、またはファシリティに関連付けられている他のデータソースを介して受信者がアクセス権を有している情報アイテムを表示することしかできない。例えば、ピンボードコレクションに2つの情報アイテムへのリンクが含まれ、ネットワーク管理者が他の情報アイテムへのアクセス権を明示的に与えていないため受信者が情報アイテムのうちの1つにしかアクセスできない場合、受信者は、受信者がアクセス権を有している情報アイテムのみを表示できる。しかし、一般的には、ファシリティは、アクセス制御許可を管理する。
第3に、作成者は、ピンボードコレクション内に現れる情報アイテムに関連付けられている特権を指定することもできる。例えば、作成者は、ピンボードコレクション内に現れるいくつかの情報アイテムが他の受信者と共有されないことを指示することができる。次いで、受信者がピンボードコレクションを他の受信者と共有しようとした場合も、ファシリティは、そのように指示された情報アイテムを共有させない。
ピンボードコレクション内に(例えば、ピン止めを介して)リスト表示されているピンボードコレクションは、ピンボードコレクションが共有されたときにこれらの様々な特権を継承または伝播することができる。したがって、作成者は、アクセスに対しきめの細かい制御を行うことができる。
様々な実施形態において、このファシリティを利用することで、受信者は、(1)レスポンスを作成者と共有すること(「プライベートレスポンス」)、または(2)作成者を含む、作成者がピンボードコレクションを共有したすべての受信者とレスポンスを共有すること(「パブリックレスポンス」)のいずれかより受け取ったピンボードコレクションに応答することができる。受信者がパブリックレスポンスを送信した場合、この応答は、受信者が応答するピンボードコレクションから特権を受け取る。その結果、作成者が受信者を元のピンボードコレクションに追加した場合に、追加された受信者は、元のピンボードコレクションにアクセスできるだけでなく、すべてのパブリックレスポンスにもアクセスできる。この継承は、ピンボードコレクションが受信者により共有されないという作成者の指示により制限されうる。
これらのパブリックレスポンスおよびプライベートレスポンスは、それ自体がピンボードコレクションである。これらは、応答対象のピンボードコレクションからアクセス権を「継承」させる属性により区別される。ユーザは、領域113に表示されているような関係するピンボード結果を表示することにより、ピンボードコレクションへのすべてのレスポンスを表示することができる。ユーザは、上述の「オーバーレイ」機能を使用して元のピンボードコレクションとともにメッセージレスポンスのピンボードコレクション内に含まれる情報アイテムを表示することができる。
作成者または受信者は、ピンボードコレクションを明示的に関係付けるか、または元のピンボードコレクションに応答することによりピンボードコレクションを関係付けることができる。ピンボードコレクションを明示的に関係付けることにより、ファシリティは、会話スレッド表示機能を使用可能にするが、これについては以下でさらに詳しく説明する。表示結果ページを取り出すときに、ファシリティは、関係するピンボードコレクションまたはレスポンスのリストを表示することができる。ファシリティは、さらに、例えば、重複していない情報をオーバーレイすることにより、関係するピンボードコレクションまたはレスポンスを処理することもできる。
十分なアクセス制御許可を持つ作成者または受信者であれば、受信者をスレッドに追加するなどのために、共有されているピンボードコレクションを修正することができる。追加された受信者がスレッドを表示した場合、追加された受信者は、関連するすべての情報アイテムおよび注釈を見ることができる。そのため、例えば、追加受信者を、スレッド上で素早く、簡単に最新状態にすることができる。追加受信者は、管理者によるさらなる介入なしで関連するすべてのドキュメントへのアクセス権を受け取る。例えば、プロジェクトチームの新規メンバーに、安全で、直接な方法によりプロジェクトのドキュメントおよびディスカッション内容のすべてに対しアクセス権を素早く与えることができる。ピンボードコレクションを新規追加された受信者と共有する人は、プロジェクトのドキュメントを検索すること、管理者にアクセス制御許可の変更を要求することなどを行う必要がなくなる。単一のアクション(例えば、shareボタンを選択すること)を介してピンボードコレクションを単に共有するだけで、共有ユーザは、新規に追加された受信者を最新状態にすることができる。
ファシリティは、ファイルシステム、データベース、または他の場所に格納されているオブジェクトに関係するアクセス制御許可を用いて機能しうる。例えば、情報アイテムがデータベースから取り出されると、ファシリティは、データベースからアクセス制御許可を取り出す。この情報アイテムが共有されたときに、ファシリティは、データベース中のアクセス制御許可を更新することができる。したがって、ファシリティは、様々な実施形態において低レベルデータベースアクセス制御許可制御を行う。
会話スレッド表示
ファシリティで利用できる会話スレッド表示のモデルは、従来システムよりも優れている。会話スレッド表示は、情報アイテムを他の情報アイテムに関連付ける一手段である。電子メール環境または電子掲示板などの従来システムでは、メッセージは、一般的に、1つの会話(例えば、スレッド)のみに属する。さらに、例えば、複数の人々が特定のレスポンスに応じることができ、これらのレスポンスがすべて、単一メッセージ中にまとめて表示されるわけではないため、会話スレッド全体をユーザに転送することができない。その結果、ユーザは、会話全体を表示するために、それぞれのレスポンスを一度に1つずつ開く必要がある場合がある。
ファシリティは、それぞれのピンボードコレクションが適宜複数の会話スレッドを含むことを可能にする。それぞれのそのような会話スレッドでは、ピンボードコレクションを使って複数の情報源を意味のある形でマージすることができる。例えば、ピンボードコレクションは、それぞれのアイテムが異なる情報源に由来する複数の情報アイテムを含むことができる。それぞれの情報アイテムは、その情報アイテムに関係する注釈を備えることができる。いくつかの実施形態では、ユーザは、情報アイテムがどのピンボードコレクション上に現れるかに応じ情報アイテムに対し異なる注釈を与えることができる。ピンボードコレクションが受信者と共有されると、受信者は、受信者の許可に基づいてすべての情報アイテムをおよび注釈の指示を受け取る。ファシリティは、指示を通知として(例えば、メッセージ類似の製品、電子メールなどを介して)、または受信者が見るピンボードコレクション内のアイテムとして指示を与える。そのため、受信者は、共有されるピンボードコレクションに関連付けられているすべての会話スレッドを表示することができる。ファシリティは、複雑な会話スレッド表示を行えるように、アクセス制御許可のオーバーレイおよび計算および適用などの様々な機能を使用する。
ピンボードコレクションおよび1つまたは複数のオーバーレイされたもしくは関係するピンボードコレクションから取り出された情報アイテムおよび注釈は、スレッド表示会話を形成する。さらに、アクセスはファシリティにより制御されるため、受信者は、受信者がアクセスできる会話の一部分しか見られない。ファシリティは、一意的な識別子を持つ行すべてにクエリを実行するので、重複する属性エントリを削除し、一意的なエントリを「オーバーレイ」することができる。
会話スレッド表示機能の他の態様において、情報アイテムおよびそれに加えられた注釈は、受信者と選択的に共有される。例えば、ユーザWがピンボードコレクションを作成し、いくつかの情報アイテムに注釈を入れ、その後、作成されたピンボードコレクションをユーザXおよびYと共有すると仮定する。次に、ユーザXが、ピンボードコレクションにさらなる注釈を追加し、更新されたピンボードコレクションをユーザWとプライベートレスポンスで共有する。また、ユーザYは、第3の注釈を情報アイテムに追加し、このレスポンスをユーザXおよびWと共有すると仮定する。ユーザWが、ピンボードコレクションを第4のユーザと共有する場合、第4のユーザは、ユーザWの元のピンボードコレクション、およびXのプライベートレスポンスではなくYのパブリックレスポンスを見ることができる。これは、ファシリティが、ユーザによって示されたアクセス制御許可を強制し、ピンボードコレクションを表示するときに、上述の「オーバーレイ」機能を使用することによりデータをマージし、重複データを削除するために起こる。
情報アイテムおよびその注釈は、複数のスレッドで表示することができる。さらに、情報アイテムに関係する注釈は、スレッド特有のものとすることができる。例えば、特定のスレッドを見るのに不十分なアクセス制御許可を持つユーザだと、そのスレッドの注釈を見ることができない。
情報アイテムの収集
ファシリティを使用すると、情報アイテムを様々な方法でピンボードコレクション内に収集することができる。ユーザは、手動で、情報アイテムをピンボードコレクションに追加することができる。例えば、ユーザは、検索を実行した後、アプリケーション内で情報アイテムを表示したり編集したりしている間、情報アイテムコレクションを表示している間などに、1つの情報アイテムを1つのコレクションにピン止めすることができる。次に、具体的な実施例として、ユーザは、例えば、メニューコマンドまたはツールバーボタンを選択し、その後既存のピンボードコレクションを選択するか、または新しいピンボードコレクションを指示することにより、ユーザがオフィス生産性アプリケーションにおいて表示または修正するドキュメントをピンボードコレクションに追加することができる、ユーザは、MICROSOFT WINDOWS(登録商標) EXPLORERツールを使用するなどの、ファイルフォルダ階層をナビゲートするときに、ファイルまたはフォルダをピンボードコレクションに追加することができる、ユーザは、「プレイリスト」内のすべてのメディア、フォルダ内のすべてのファイル、または電子メールもしくは電子掲示板会話内のすべてのメッセージが、ピンボードコレクション内に入れるべき情報アイテムであることを指示することができる、といったことが挙げられる。いくつかの実施形態では、ユーザは、GOOGLE SEARCHまたはMICROSOFT SEARCHなどの、ファシリティの一部ではない検索プロバイダにより提供された検索結果から1つまたは複数の検索結果リンクを追加することができる。例えば、ユーザは、リンクをコピー&ペーストする、リンクをドラッグ&ドロップするなどの方法でそれらのリンクを追加することができる。ユーザは、さらに、同様の方法で、Webサイトアドレスなどの他のURLを追加することもできる。ユーザは、次いで、ファシリティの外部の何らかの場所から追加されたそれらのリンクのどれかに注釈を付けることができる。
ファシリティにより、情報アイテムをピンボードコレクションに自動的に追加することができる。例えば、ファシリティは、RSSサイトまたはRSSサイトのグループからRSSフィードをプログラムにより追加するためのAPIを備えている。様々な実施形態において、ファシリティのAPIを使用することにより、アプリケーションでRSSサイト、RSSフィード、またはRSSサイト、RSSフィード、またはRSSアイテムの1つまたは複数の属性を指定し、例えば、これらのうちのどれをピンボードコレクションに追加すべきかについてフィルタ処理を行うことができる。さらに他の実施例では、ファシリティは、情報アイテムの実質的にどのようなグループ(例えば、様々な基準を満たす電子メールスレッド)であってもピンボードコレクションおよび関連する情報アイテムに変換するAPIを備える。
図4は、情報アイテムを収集するため様々な実施形態におけるファシリティにより使用されるcollect_information_itemsルーチンを例示する流れ図である。このルーチンは、クエリの指示をパラメータとして受け取るブロック402から始まる。例えば、このルーチンは、作成者がクエリテキスト領域内にクエリとして入力したテキストの指示を受け取ることができる。
ブロック404で、ルーチンは、検索プロバイダと連携するようにファシリティが構成されている検索プロバイダを識別する。例えば、ルーチンは、レジストリから検索プロバイダのリストを決定することができる。上述のように、ファシリティは、インターネット検索エンジン、デスクトップ検索エンジンなどの様々な検索プロバイダと連携する。プロバイダは、さらに、例えば、ファシリティに関連付けられている一次検索ページ、一次検索ページによって指示された検索プロバイダ、および追加のピンボードコレクションなどのクエリで指定された追加の検索プロバイダを含むことができる。
ブロック406と418との間で、ルーチンは、受け取ったクエリを使用して検索し、結果をデータベースに格納するように識別された検索プロバイダに要求する。ブロック406で、ルーチンは、検索プロバイダを選択する。
ブロック408で、ルーチンは、受け取ったクエリを使用して選択された検索プロバイダに検索を要求する。検索プロバイダは、検索プロバイダに検索を実行するよう要求するためにソフトウェアアプリケーションが使用することができる異なるアプリケーションプログラムインターフェースを備えることができる。これにより、ファシリティは、様々なアプリケーションプログラムインターフェースとともに機能する。様々な実施形態において、ファシリティは、ファシリティのアプリケーションプログラムインターフェースと検索プロバイダのアプリケーションプログラムインターフェースとの間に抽出層を備えることができる。これが備えられると、ソフトウェア開発者は、ファシリティと検索プロバイダとの間の通信を簡単に行えるようにするユーティリティプログラムまたはソフトウェアモジュールを容易に書くことができる。
検索プロバイダは、生成される結果の種類に応じて分類されることができる。例えば、検索プロバイダは、固定された結果、フィルタ処理された結果、または計算された結果を出力することができる。固定された結果を出力する検索プロバイダは、一般的に常に、クエリに関連付けられている情報アイテムの同じ集合を返す。フィルタ処理された結果を出力する検索プロバイダは、一般的に、情報アイテムの集合を様々な基準に応じてフィルタ処理された情報アイテムのより大きな集合から取り出して提供する。計算された結果を出力する検索プロバイダは、一般的に、他の検索プロバイダにより提供される情報アイテムに基づくなど、計算に基づく結果を提供する。
検索プロバイダは、様々なプロトコルまたは言語を使用して、情報アイテムを取り出すことができる。例えば、検索プロバイダは、ハイパーテキスト転送プロトコル、構造化照会言語、シンプルオブジェクトアクセスプロトコルなどを使用することができる。検索プロバイダは、これらのプロトコルまたは他のプロトコルを使用して、検索結果を出力することができる。多くの場合、検索プロバイダは、XMLで結果を出力する。
ブロック410で、ルーチンは、重複する情報アイテムを削除する。様々な実施形態において、このルーチンは、URLなどのコンテンツまたは識別子をチェックすることにより情報アイテムが重複であるかどうかを判定する。ファシリティは、複数の検索プロバイダから受け取った重複するアイテムを削除するか、またはマージすることができる。検索プロバイダは、検索プロバイダにより特定された情報アイテムを識別するためのURLを提供することができる。複数のプロバイダがURLに関係する情報を提供する場合、ファシリティは、検索プロバイダが重複する情報を提供したかどうかを判定する。そうであれば、ファシリティは、重複する情報を削除する。それとは別に、複数の検索プロバイダが、URLに関係する異なる情報を提供する場合、ファシリティは、異なる情報を組み合わせて、異なる情報を含む「オーバーレイ」結果を出力する。例えば、一方の検索プロバイダがタイトルおよび説明属性を提供し、他方の検索プロバイダが注釈およびタイトル属性を提供する場合、オーバーレイ機能は、タイトル、説明、および注釈属性を提供する。様々な実施形態において、ファシリティは、すべての検索プロバイダが結果を出力した後、重複する情報を削除するか、または異なる情報をマージすることができる。このような場合、ブロック410のロジックは、ブロック406〜418のループの外で実行することができる。
ブロック412で、ルーチンは、検索プロバイダにより返された情報アイテムからデータを取り出し、取り出されたデータを、ファシリティが取り出されたデータを「正規化する」ために使用する内部形式に変換する。例えば、ルーチンは、情報アイテムに関係する抜粋を形成するのに十分な情報を取り出すことができる。様々な実施形態において、ファシリティは、RSSを情報アイテムに関係するデータを格納するための内部形式として使用する。
クロック414で、ルーチンは、変換された情報をデータベースに格納する。様々な実施形態において、データベースは、情報アイテムに関連付けられているURLに基づいてソートされる。データベースエントリをURLでソートすることにより、複数のプロバイダからの情報アイテムを、必要に応じて、グループにまとめるか、排除することができる。
ブロック416で、ルーチンは、取り出された情報アイテムに対する優先度を計算し、それらの優先度をデータベース内に格納する。例えば、ルーチンは、クエリ内の語が情報アイテム内に見つかった回数に基づいて優先度を計算することができる。ファシリティは、当業で知られている優先度または関連性を計算する様々な方法のどれかを使用することができる。様々な実施形態において、ファシリティは、優先度を動的に計算する。例えば、ファシリティは、すべての検索プロバイダにより返された情報アイテムを組み合わせた後に優先度を計算することができる。
ブロック418で、ルーチンは、他のプロバイダを選択する。ファシリティが動作するように構成されるプロバイダがそれ以上ない場合、ルーチンは、ブロック420のところから続き、そこでルーチンが戻る。そうでない場合、ルーチンはブロック406から続く。
様々な実施形態において、ファシリティを使用することで、ユーザは検索プロバイダの集合の部分集合を選択することができる。例えば、作成者または受信者は、情報アイテムを検索するためにどの検索プロバイダを使用すべきかを識別することができる。ファシリティは、さらに、追加の検索プロバイダを「発見」することもできる。例えば、検索の結果から、他の検索プロバイダを登録し、使用するための命令を含むドキュメントを形成することができる。ファシリティは、これらの検索プロバイダを動的にインストールし、アクティブ化することができる。それとは別に、ユーザは、インストールし使用すべき検索プロバイダを指示することができる。検索プロバイダは、さらに、検索時に使用すべき他の検索プロバイダを指示することもできる。
様々な実施形態において、ファシリティは、検索クエリに基づきいくつかの検索プロバイダを自動的に選択することができる。例えば、検索クエリが「movie」を含む場合、ファシリティは、オンライン映画レンタル一式により与えられる検索プロバイダを自動的に選択することができる。
様々な実施形態において、情報アイテムの場合とまったく同様に、検索プロバイダを他のユーザと共有することができる。受信者が検索プロバイダを受け取ると。ファシリティは、受信者の使用に関して検索プロバイダを登録またはアクティブ化することができる。
図5は、ピンボードコレクション(pinboard collections)を識別する統一リソースロケータを取り扱うため様々な実施形態におけるファシリティにより使用されるhandle_URL routineを例示する流れ図である。このルーチンは、URLの指示をパラメータとして受け取るブロック502から始まる。
ブロック504で、ルーチンは、URLがピンボードコレクションに関係しているか、または他の何らかのドキュメントに関係しているかを判定する。URLがピンボードコレクションに関係している場合、ルーチンはブロック506から続く。そうでない場合、ルーチンはブロック512から続く。様々な実施形態において、ファシリティは、URLがピンボードコレクションに関係していると判定した後、handle_URLルーチンを呼び出す。このような場合、ルーチンは、ブロック502から始まった後に、ブロック506から続く。
ブロック506で、ルーチンは、create_pinboard_collectionサブルーチンを呼び出し、URLの受け取った指示をサブルーチンに渡す。create_pinboard_collectionサブルーチンについては、図6に関して以下でさらに詳しく説明する。様々な実施形態において、このルーチンは、サブルーチンを呼び出すときにURLの一部を渡すことができる。例えば、ルーチンは、URLのパラメータ部分を渡すことができる。様々な実施形態において、URLのパラメータ部分は、疑問符の後のURL文字列の部分である。
ブロック508で、ルーチンは、適宜、ブロック506で呼び出されたサブルーチンにより返される作成されたピンボードコレクションを変換する。例えば、ルーチンは、受け取ったピンボードコレクションをハイパーテキストマークアップ言語(「HTML」)に変換することができる。様々な実施形態において、create_pinboard_collectionサブルーチンは、ピンボードコレクションをXMLで返す。このような場合に、受け取ったXMLをHTMLに変換し、インターネットブラウザなどを使用して、ピンボードコレクションを人が読める形式にしてユーザに提示するようにすると有益である。様々な実施形態において、XSLまたはASPは、XMLをHTMLに変換するために使用される。様々な実施形態において、ルーチンは、作成されたピンボードコレクションを他の何らかの形式のドキュメントに変換することができる。
ブロック510で、ルーチンは、ピンボードコレクションを返す。返されるピンボードコレクションは、XML、HTML、または他の何らかの形式とすることができる。
ブロック512で、ルーチンは、URLの通常の取り扱いを実行する。例えば、このルーチンにより、Webサーバはドキュメントを返すことができる。ブロック514で、ルーチンは戻る。
図6は、ピンボードコレクションを作成するため様々な実施形態におけるファシリティにより使用されるcreate_pinboard_collectionルーチンを例示する流れ図である。このルーチンは、URLの指示をパラメータとして受け取るブロック602から始まる。様々な実施形態において、このルーチンは、URLのパラメータ部分などのURLの一部を受け取ることができる。
ブロック604で、ルーチンは、URLの受け取ったパラメータとURLにより指示されるピンボードコレクションに基づいてクエリプランを作成し、実行する。クエリプランは、様々な情報源からの結果を結果セットに加えてクエリを形成する一組のオペレーションである。様々な実施形態において、クエリプランは、データベースサーバにより実行され、情報源からの結果がデータベーステーブルに追加される。様々な実施形態において、テーブルのそれぞれの行は、ピンボードコレクションファイル形式のXML要素を表すが、これについて以下でさらに説明する。ファシリティは、ピンボードコレクションに対するすべての検索プロバイダを識別し、識別された検索プロバイダに結果を生成させるコマンドを構成することによりクエリプランを作成する。テーブル内に格納される結果セットの一実施例は、図7に関して以下でさらに詳しく説明される。
様々な実施形態において、ピンボードコレクションを記述するドキュメント(例えば、ファイル)は、ファシリティが検索プロバイダから検索結果を取得し、与えられた結果をファシリティ側で使用する形式に変換するために使用することができる、実行可能コードなどのオブジェクトのロケーションに関する情報を含む。例えば、ピンボードコレクションは、これらの機能を実現するダイナミックリンクライブラリのロケーションおよび名前を含むことができる。
様々な実施形態において、ファシリティは、検索結果を格納するために、MICROSOFT SQL SERVERまたはORACLEデータベースソフトウェアなどのリレーショナルデータベースシステムを使用する。
様々な実施形態において、ピンボードコレクションは、他のピンボードコレクションまたは検索プロバイダの指示をピン止めされた情報アイテムとして含む。これがその場合であれば、ファシリティは、これらの他のピンボードコレクションおよびピン止め情報アイテムにより参照される情報アイテムをさらに検索するか、または取り出すことができる。ピンボードコレクションが検索プロバイダを参照する場合、ファシリティは、検索プロバイダの指示から関連する情報をダウンロードする。例えば、検索プロバイダは、リンクにより示すことができる。ファシリティは、検索プロバイダにクエリを実行するときにこのダウンロードされた情報を使用して、その結果を、ファシリティが内部で使用する形式に変換する。
様々な実施形態において、情報アイテムまたはピンボードコレクションは、ピンボードコレクション内で「アクティブ」として示すことができる。例えば、検索で、潜在的検索プロバイダが特定された場合、ユーザは、見つかった検索プロバイダをアクティブ化することができる。これがその場合であれば、ファシリティは、アクティブな検索プロバイダを使用して、ピンボードコレクションに関係するさらなる検索を実行することができる。
ブロック606で、結果集合がソートされる。例えば、結果セットが、データベーステーブル内でソートされる場合、データベースの行は、テーブルの列のうちの1つの中の値に応じてソートすることができる。
様々な実施形態において、ファシリティは、図7に関して以下で詳しく説明される形式を持つデータベーステーブルを使用する。そのような実施形態では、ファシリティは、以下のようにデータベーステーブルをソートすることができる。データベーステーブルは、最初に、セクションの列でソートされる。それぞれのセクションは、次いで、行に含まれる表示結果ページデータがどこに表示されるかに応じてソートされる。次いで、それぞれのセクション内の行は、高い優先度を持つ情報アイテムほど低い優先度を持つ情報アイテムよりも前に表示されるように優先度でソートされる。それぞれのセクション内の行は、次に、特定のURLからの情報アイテムがグループにまとめられるようにURLでソートされる。様々な実施形態において、行は、さらに、行の型、値、およびintValue列などでソートすることができる。これらの列については、図7に関して以下でさらに詳しく説明する。
ブロック608で、ルーチンは、結果セットの行からXMLドキュメントを作成する。様々な実施形態において、ファシリティは、必要と思われる欠損行に対する既定値を挿入する。例えば、RSSは、フィードおよびエントリを定義するときに様々なXML要素を使用することができる。しかし、これらの要素は、検索プロバイダからは与えることができない。そのような場合、ルーチンは、それらの要素に対する既定値を追加することができる。様々な実施形態において、ファシリティは、重複する行を削除することができる。例えば、複数の検索プロバイダは、与えられた情報アイテムについて類似のまたは同一のXML要素を提供することができる。スキーマが許すのであれば、ファシリティは、いくつかの重複値を削除することができない。様々な実施形態において、ファシリティは、XMLノードまたは要素を追加することができる。例えば、ファシリティは、XMLノードを追加し、ピンボードスキーマを完成させることができる。様々な実施形態において、ファシリティは、ブロック608のロジックを実行するときに図4に関して上で説明されているcollect_information_itemsルーチンを実行する。
ブロック610で、ルーチンは、XMLドキュメントを返す。
様々な実施形態において、ピンボードコレクションファイル形式は、RSSに基づく。例えば、ピンボードコレクションファイル形式は、RSSバージョン2.0に基づくものであってよく、これは、インターネットサイトblogs.law.Harvard.edu/tech/RSSにおいて説明されている。RSSは、フィードおよびエントリを定義する。フィードは、情報アイテムのソースを識別する。エントリは、抜粋などの情報アイテムのいくつかの態様を記述する。
様々な実施形態において、ファシリティは、RSSを拡張する。例えば、ファシリティは、テキストおよび検索プロバイダ要素をRSSフィードに追加することができる。テキスト要素は、クエリを識別するために使用することができる。例えば、ピンボードコレクションを生成するために使用されるクエリをテキスト要素内に格納することができる。検索プロバイダ要素は、ピンボードコレクションに関係する検索プロバイダを特定するためにファシリティにより使用されうる。
他の実施例では、ファシリティは、さらに、型、抜粋、修正、メモ、アクセス、およびソース要素を含む、様々な要素をRSSエントリに追加することもできる。型要素は、Webページまたは表計算ソフトウェアなどの情報アイテムの型を示すために使用することができる。抜粋要素は、情報アイテムに関係する抜粋を格納するために使用することができる。修正要素は、ピンボードコレクションの最終修正日時を格納するために使用することができる。メモ要素は、ピンボードコレクションまたは情報アイテムに関係する注釈または他の情報を格納するために使用することができる。アクセス要素は、アクセス制御許可(「ACP」または単に「許可」)を情報アイテムに関してどのように伝播または継承されるかの指示を格納するために使用することができる。ソース要素は、どの検索をプロバイダが情報アイテムを出力したかを示す情報を格納するために使用することができる。
図7は、様々な実施形態においてクエリプランを実行するときにファシリティにより作成される結果セットテーブルを例示するテーブルの図である。結果セットテーブル700は、クエリID列702、セクション列704、URL列706、行型列708、値列710、および整数値列712を持つ。テーブルは、ピンボードコレクションからの情報アイテムの「shredded」コレクションを含む。
クエリID列702は、テーブルの行に対応する結果を生成するために使用されるそれぞれのクエリを一意に識別する。ファシリティは、複数の同時クエリを処理することができるため、この一意的識別子を使用して、クエリと結果セットテーブル内の行との間の対応関係を決定することができる。そのため、結果テーブルに対しクエリを実行する場合、ファシリティは、クエリIDでフィルタ処理することができる。
セクション列704は、それぞれの行に対応するセクションを識別する。例えば、セクション列は、行がエントリに対するフィードに関係するかどうかを識別する。すでに説明されているように、ピンボードコレクションを定義するファイルの一部分は、フィードエントリに関係している。
URL列706は、行に関係する情報アイテムが取り出されたURLを識別する。
行型列708は、行に格納されているRSS要素の型を識別する。例えば、行に対する行型は、タイトル、発行日、説明などとすることができる。
値列710は、行に関連付けられている要素に対する実際のXMLデータを格納する。
整数値列712は、それぞれの行に対する整数表現を格納する。ファシリティは、この列を使用して、行をソートすることができる。例えば、この列は、関連性またはランク情報を格納することができる。ファシリティが結果をソートする場合、この列を使用して、類似の関連性またはランクを持つ情報アイテムをグループにまとめることができる。
図8は、様々な実施形態においてファシリティが動作しうる好適な環境を例示するブロック図である。環境は、ネットワーク804を介して1つまたは複数のクライアントコンピューティングデバイス806に接続することができる1つまたは複数のサーバコンピューティングデバイス802を備える。
サーバコンピューティングデバイスは、Webサーバ、電子メールサーバ、データベースサーバ、ファイルサーバ、情報アイテムのソースなどとすることができる。様々な実施形態において、サーバは、複数のサービスまたはアプリケーションを同時に提供することができる。
ネットワークは、インターネット、イントラネット、または無線または有線ネットワークを含むデータ通信ネットワークの任意の組合せとすることができる。
クライアントコンピューティングデバイスは、作成者または受信者などのユーザが、ピンボードコレクションを作成、表示、または操作するために使用することができる。
様々な実施形態において、ファシリティは、複数のサーバを使用することができ、それぞれのユーザは、複数のサーバのうちの1つに関連付けられうる。しかし、ユーザは、どのサーバに関連付けられるかを意識する必要はない。ファシリティは、アクセス権が与えられているすべての情報にユーザがアクセスできることを保証する。ファシリティは、ピンボードコレクションにピン止めされている情報アイテムが、ユーザが関連付けられているサーバのドメインから使用不可能である場合などに、情報をレプリケートすることができる。レプリケーション機能について、以下でさらに詳しく説明する。ユーザがファシリティに検索を実行するよう要求すると、関連付けられているサーバは、ユーザが検索要求をファシリティの他のサーバに送った場合でも検索を実行することができる。ファシリティにより格納されているピンボードコレクションおよび情報アイテムは、一般的に、関連付けられているサーバに関連付けられている記憶装置デバイスにも格納される。
図9は、様々な実施形態において図8のサーバのいくつかの態様をさらに詳細に例示するブロック図である。サーバ900は、データベース902に接続することができる。様々な実施形態において、データベースは、サーバ900に格納することができる。他の実施形態において、データベースは、サーバ900に接続されている他のサーバに格納することができる。
サーバ900は、さらに、インターネットサーバ904、ピンボードコレクションサービス906、および1つまたは複数の検索プロバイダ908などの様々なソフトウェアコンポーネントを備える。
インターネットサーバは、URLを評価し、何らかのロジックを実行し、そのURLに関係する情報を返すことにより、URLを含む要求に応答する従来のサービスである。例えば、URLがドキュメントに関係している場合、インターネットサーバは、ドキュメントをロードし、ドキュメントのコンテンツを要求側に送信することにより応答する。URLがピンボードコレクションに関係する場合、インターネットサーバは、ピンボードコレクションサービス906に、ピンボードコレクションを作成させ、作成されたピンボードコレクションのコンテンツを要求側に返すことにより応答する。
ピンボードコレクションサービス906は、ピンボードコレクションを作成する指示を受け取った後、1つまたは複数の検索プロバイダ908を使用して、情報アイテムを検索することができる。ピンボードコレクションサービスは、これらの情報アイテムを上述のようなクエリプランの一部として検索結果にまとめる。次いで、ピンボードコレクションサービスは、検索結果からピンボードコレクションを作成することができる。様々な実施形態において、ピンボードコレクションサービスは、作成された検索結果を、要求側クライアントコンピューティングデバイスがユーザに対し表示することができる形式に変換することができる。例えば、ピンボードコレクションサービスは、作成された検索結果をXMLからHTMLに変換することができる。
図10は、様々な実施形態におけるファシリティにより提供される表示結果ページを例示する表示画面である。例示されているディスプレイ画面の図は、permissionsボタン1002および複数の情報アイテム許可ボタン1004をさらに備えることを除き、図2のディスプレイ画面と似ている。
permissionsボタン1002は、選択された場合、ファシリティに、図11に関して以下でさらに詳しく説明されるpermissionsユーザインターフェースを表示させる。ユーザが、OKまたはapplyボタンなどを選択することにより、permissionsユーザインターフェースを終了させると、ファシリティは、そのユーザインターフェースに示されている許可をpermissionsボタン1002が選択されたピンボードコレクションに適用する。したがって、作成者または受信者は、ピンボードコレクションに関係する許可をセットまたはリセットすることができる。例えば、作成者は、受信者が作成者によって受信者に送信されるピンボードコレクションをさらに共有する許可を得ていないことを指示することができる。
情報アイテム許可ボタン1004は、ピンボードコレクション内に表示されるそれぞれの情報アイテムに関連付けられる。表示結果ページのピンボードコレクション結果領域112などに追加のピンボードコレクションを表示する場合、ファシリティは、さらに、追加の表示されるピンボードコレクションに関連付けられている追加の情報アイテム許可ボタン1004も備えることができる。ユーザが情報アイテム許可ボタン1004のうちの1つを選択した場合、ファシリティは、図11に関して以下でさらに詳しく説明される、permissionsユーザインターフェースを表示する。様々な実施形態において、ファシリティがピンボードコレクションに対し許可を設定するために備えるユーザインターフェース(例えば、permissionsボタン1002により呼び出されるユーザインターフェース)は、情報アイテム許可を設定するために呼び出されるユーザインターフェースと異なっていてもよい。ユーザが、OKまたはapplyボタンなどを選択することにより、permissionsユーザインターフェースを終了させると、ファシリティは、そのユーザインターフェースに示されている許可を、ユーザによって選択された情報アイテム許可ボタン1004に対応する情報アイテムまたは追加のピンボードコレクションに適用する。したがって、作成者または受信者は、ピンボードコレクション内に示されている情報アイテムまたは追加のピンボードコレクションに関係する許可をセットまたはリセットすることができる。例えば、作成者は、特定の受信者が作成者によってピンボードコレクションにピン止めされた情報アイテムの一部を表示する許可を得ていないことを指示することができる。
図11は、様々な実施形態におけるファシリティにより使用される許可を示すユーザインターフェースを例示する表示画面である。ユーザインターフェース1100は、リストボックス1102などに受信者のリストを提示することができる。例示されている実施例では、Brian Beanは受信者として示されている。ユーザインターフェースは、許可1104、1106、および1108などの許可のリストも提示することができる。
作成者または受信者などのユーザは、受信者リストから一人または複数の受信者を選択し、次いで、ファシリティが選択された受信者に与えるべき許可を指示することによりピンボードコレクションまたは情報アイテムに関係する許可を指定することができる。例示されているユーザインターフェースは、view許可1104、share許可1106、およびfull許可1108を示すが、他の許可も可能であり、考えられる。
ユーザが複数の許可のうちの1つまたは複数を指示した場合、ファシリティは、それらの許可を、ユーザインターフェースが呼び出されたアイテムに適用する。例えば、ファシリティは、ユーザがpermissionsボタン1002を選択したか、または情報アイテム許可ボタン1004のうちの1つを選択したかに応じて指示された許可を情報アイテムまたはピンボードコレクションに適用することができる。
受信者が、view許可を有している場合、ファシリティは、その受信者が関連するアイテムを表示できるようにする。ファシリティは、view許可を持っていない受信者が情報アイテムまたはピンボードコレクションを表示することをできないようにする。
受信者が、share許可を有している場合、ファシリティは、その受信者が関連するアイテムを他の受信者と共有できるようにする。例えば、share許可を持つ受信者は、受け取ったピンボードコレクションを他の受信者と共有することができる。受信者がshare許可を持ついくつかの情報アイテムおよび受信者がshare許可を持たない他の情報アイテムを有する受け取ったピンボードコレクションを受信者が共有する場合、下流の受信者は、共有する受信者がshare許可を持つ情報アイテムのみを受け取ることができる。
受信者が、アイテムに対するfull許可を有している場合、ファシリティは、その受信者がアイテムを表示するか、アイテムを共有するか、またはアイテムを修正することができるようにする。ファシリティは、さらに、そのような受信者が追加のアイテムを追加できるようにもすることが可能である。
情報アイテムおよびピンボードコレクションは、ファシリティがアクセス制御許可(「ACP」)を決定する際に基づく様々な関係を持つことができる。これらの関係は、例えば、「none(なし)」、「propagate(伝播)」、「inherit(継承)」、「both(両方)」とすることができる。ファシリティは、さらに、他の関係も定義することができる。ピンボードコレクションまたは情報アイテムが関係を持たない場合、ファシリティは、そのピンボードコレクションまたは情報アイテムに対するACPを他のピンボードコレクションまたは情報アイテムに基づいて計算する必要はないが、それにもかかわらず、例えば関係するピンボードコレクションとして、ピンボードコレクションを表示することができる。ピンボードコレクションまたは情報アイテムがpropagate関係を持つ場合、ファシリティは、そのピンボードコレクションまたは情報アイテムに対するACPを、そのピンボードコレクションまたは情報アイテムがピン止めされているピンボードコレクタについて決定または指示されているACPに基づいて計算する。ピンボードコレクションまたは情報アイテムがinherit関係を持つ場合、ファシリティは、そのピンボードコレクションまたは情報アイテムがピン止めされているピンボードコレクションに対するACPを計算する。様々な実施形態において、ファシリティは、情報アイテムまたはピンボードコレクションがピン止めされたときに自動的に関係を指定する。例えば、ファシリティは、既定でpropagate関係を選択することができる。様々な実施形態において、ファシリティは、既定の関係を構成することができるが、ユーザは、その関係を修正することができる。関係を修正するためのユーザインターフェースは、図11のユーザインターフェースに関連付けることができる。例えば、図11のユーザインターフェースを、ユーザが関係のリストから関係を選択することなどにより関係を選択できるように拡張することが可能である。様々な実施形態において、関係を選択するためのユーザインターフェースは、図10に例示されている表示結果ページなどの表示結果ページまたはピンボードコレクションに表示されるドロップダウンメニューを経由することができる。
これらの関係は、図12A〜12Eを参照することによりさらに説明され、これらの図は、様々な実施形態において許可を決定するピンボードコレクションと情報アイテムとの間の関係を例示するブロック図である。これらの図は、正方形がピンボードコレクションを表し、円形が情報アイテムを表している有向グラフを示す。ピンボードコレクションと情報アイテムをつなぐ辺は、ピンボードコレクションまたは情報アイテムが。辺を共有するピンボードコレクションにピン止めされることを示している。矢印は、ACPが流れる方向を示している。例えば、図12Aによれば、ACPは、ピンボードコレクションから情報アイテムに伝播する。辺を共有するピンボードコレクションの下に表示される情報アイテムまたはピンボードコレクションは、その上のピンボードコレクションにピン止めされる。例示されているノードは、さらに、例示されていない他の関係も持つことができる。
図12Aによれば、ピンボードコレクションA 1202とピンボードコレクションB 1204の2つのピンボードコレクションがある。ピンボードコレクションAは、それに、情報アイテム1 1206、2 1208、および3 1210をピン止めしている。ピンボードコレクションBは、それに、情報アイテム5 1214をピン止めしている。情報アイテム4 1212は、いずれかのピンボードコレクションにピン止めされているとは示されていない。
ユーザX、Y、およびZは、ピンボードコレクションAに対しfull許可を有するが、これらのユーザはいずれも、情報アイテム4に対する許可を持たない。ともかくユーザX、Y、またはZが情報アイテム4を特定した場合、その情報アイテムを表示することはできないが、それは、例えば、オペレーティングシステムのファイルシステムが、それらのユーザが必要なACPを持たないことを示しているからである。さらに、ユーザWがピンボードコレクションAに対しfull特権を有し、情報アイテム4に対しread特権を有すると仮定する。したがって、ユーザWは、図12Bに示されているように、情報アイテム4をAにピン止めすることができる。
ユーザが新しいアイテムをピン止めすることなどによりピンボードコレクションを修正する場合、ファシリティは、ピンボードコレクションにピン止めされたすべての情報アイテムおよびピンボードコレクションについてACPを再計算することができる。ACPを計算または設定するルーチンについて、図13A〜Cに関して以下でさらに詳しく説明する。
情報アイテム4は、ピンボードコレクションから情報アイテム4への有向辺により示されているような「propagate」関係を持つ。その結果、情報アイテム4がピンボードコレクションAにピン止めされた後、情報アイテム4のACPは、ピンボードコレクションAに対するACPと情報アイテム4について明示されているACPとの和(union)となるように計算される。この実施例では、情報アイテム4に対する許可を以前には持っていなかったユーザX、Y、およびZは、このアイテムがピンボードコレクションAにピン止めされた後、情報アイテム4に対しfull許可を持つことになる。これは、これらのユーザが、情報アイテム4との伝播関係を持つ、ピンボードコレクションAに対するfull許可を持っていたからである。
ユーザZは、ピンボードコレクションAおよびBならびに情報アイテム5に対しshare許可を持ち、ユーザWは、情報アイテム5に対し許可を持たないが、ピンボードコレクションAに対してはfull許可を持つと仮定する。さらに、ユーザZは、図12Cに示されているように、情報アイテム5をピンボードコレクションAにピン止めすると仮定する。次いで、ファシリティは、情報アイテム5に対するACPをピンボードコレクションAおよびBに関する許可の和(union)として再計算する。再計算の後、ユーザWは、情報アイテム5に対しfull許可を持つことになるが、それは、ピンボードコレクションAおよびBのACPが、情報アイテム5に伝播され、したがって、ピンボードコレクションAに対するユーザWの許可が情報アイテム5に伝播するからである。
図12Dは、inherit関係を例示している。図12Dによれば、ピンボードコレクションAは、inherit関係を示す矢印を持つ、辺1230で示されているように、ピンボードコレクションC 1228からACPを継承する。そのため、ピンボードコレクションCがピンボードコレクションAにピン止めされたとしても、ピンボードコレクションCからACPを継承するのはピンボードコレクションAである。様々なイベントが発生した後、ファシリティは、ピンボードコレクションCのACPに基づいてピンボードコレクションAのACPを再計算する。情報アイテム1〜5との伝播関係に基づき、これらのACPは、さらに、これらの情報アイテムに流れうる。例えば、ユーザVがピンボードコレクションCに対するview許可を有している場合、そのユーザは、さらに、情報アイテム1〜5に対するview許可も受け取る。
図12Eは、両方向に流れるピンボードコレクションAとCとの間の関係を例示している(例えば、この関係は、inheritとpropagateの両方である)。この場合、ACPがピンボードコレクションCからピンボードコレクションAに、ピンボードコレクションAからピンボードコレクションCに流れる。関係が2つのノードの間で両方向に流れる場合、ファシリティは、両方のノードのACPの同期をとる。ファシリティは、これが発生したときに無限ループを検出し、無限ループに陥るのを防ぐことができる。
様々な実施形態において、ファシリティは、様々なイベントが発生するときにACPを再計算する。これらのイベントは、例えば、情報アイテムがピンボードコレクションにピン止めされるか、またはピンボードコレクションもはやピン止めされなくなったとき、ACPが情報アイテムについて修正されたとき(例えば、手動で、または他のピンボードコレクションにピン止めされた結果として)、またはときどき(例えば、周期的に、またはランダムに)である。
上述のように、ファシリティは、有向グラフとして表すことができるピンボードコレクションと情報アイテムとの間の関係とともに機能しうる。これは、従来からツリーにより表されている大半のアクセス制御スキームとは対照的である。ACP継承は、有向グラフとして表されるため、ACPの継承および伝播に対して複雑な関係は定義されうる。有向グラフのそれぞれのノードは、情報アイテムまたはピンボードコレクションを表し、それぞれの有向辺は、ACPがどのように流れるかを定義する関係を示す。与えられたノードに対する計算されたACPは、そのノードについて明示的設定されているACPと有向辺が示される他のすべてのノードのACPとの和(union)である。図12Eの有向グラフを例にとり、情報アイテム5、ピンボードコレクションA、およびピンボードコレクションBに対するACPは、それぞれ、K、L、およびMであると仮定する。情報アイテム5について計算されたACPは、(K∪L∪M)となる。当業で知られているように、複数のソース集合に対し和演算(union operation)を実行すると、2つの集合内のすべての要素の最小の組合せである結果セットが得られる。
ファシリティでは、関係を定義するグラフが循環を含むときなどに、ACPの再計算がエンドレスループにならないようにするために様々な技術を使用することができる。例えば、ファシリティは、すでにピンボードコレクションまたは情報アイテムに適用されているACPがピンボードコレクションまたは情報アイテムについてファシリティにより計算されたACPと一致する場合にリンクの再計算を停止することができる。
様々な実施形態において、ファシリティは、オペレーティングシステムと双方向にやり取りし、ACPを取り出すか、または設定する。例えば、情報アイテムからピンボードコレクションへのinherit関係における許可を計算する場合、ファシリティは、オペレーティングシステムにクエリを発行し、その情報アイテムに対しどのようなACPを明示的に設定するかを決定することができる。他の実施例では情報アイテムについてACPを計算してから、ファシリティは、オペレーティングシステムに、情報アイテムに対するACPを設定するよう要求することができる。様々な実施形態において、ファシリティは、性能を改善すること、またはACPを強化することなどのために、ACPをデータベース内にキャッシュする。
いくつかの実施形態では、ACPは、ファイルシステム、データベースなど、ファシリティにより使用される他のオブジェクト(例えば、情報アイテムを格納するオブジェクト)により使用される他のアクセス制御機構に加えて、またはそれがあるにもかかわらず、ファシリティにより管理される。いくつかの実施形態では、ファシリティは、情報アイテムではなくクエリを通じて、または情報アイテムに加えて、ACPを伝播させる。例えば、ACPは、指定された検索語を含む情報アイテム(例えば、ピンボードコレクション内の)に伝播しうる。このような実施形態では、ピンボードコレクションは、動的に格納または計算することができる。
図13A〜13Cは、ACPを修正するため様々な実施形態におけるファシリティにより使用されるルーチンを例示する流れ図である。これらのルーチンは、ピンボードコレクションが変わったことをファシリティが検出したときなど、様々な時期にファシリティにより使用されうる。ファシリティは、ユーザコンテキストにおいてこれらのルーチンの一部を、そしてシステムコンテキストにおいて他の部分を実行することができる。ルーチンのロジックが、ユーザコンテキストにおいて実行される場合、オペレーティングシステムによりユーザが実行できるアクションのみが、実際に実行可能である。対照的に、ルーチンのロジックが、システムコンテキストにおいて実行される場合、オペレーティングシステムが実行できるすべてのアクションが、実際に実行可能である。
図13Aは、アクセス制御(例えば、許可または特権)を修正するため様々な実施形態におけるファシリティにより使用されるmodify_access_controlルーチンを例示する流れ図である。このルーチンは、アイテムの指示をパラメータとして受け取るブロック1302から始まる。指示されたアイテムは、例えば、ピンボードコレクションまたは情報アイテムとすることができる。
ブロック1304で、ルーチンは、関係するアイテムの集合を決定する。関係するアイテムは、ACPを指示されたアイテムに伝播する、または指示されたアイテムがACPを継承する他のピンボードコレクションまたは情報アイテムである。
ファシリティは、適宜、ブロック1306に示されているように、データベース内にこれらの関係をキャッシュすることができる。例えば、ファシリティは、それぞれの情報アイテムまたはピンボードコレクションビューおよびファシリティがテーブルに追加した他の情報アイテムおよびピンボードコレクションとの関係を示す行を持つ1つまたは複数のデータベーステーブルを作成することができる。それぞれの情報アイテムまたはピンボードコレクションは、テーブル内で一意的に識別することができる。テーブルのそれぞれの行は、アイテムに対する一意的な識別子、アイテムのロケーション、およびアイテムに対するACPを格納することができる。他のテーブルは、アイテムの一意的な識別子、アクセス制御関係(例えばinherit、propagate、both、またはnone)、およびその行に関連付けられているアイテムが関係するアイテムの一意的な識別子を含む行を持つことができる。
ブロック1308で、ルーチンは、compute_access_control_permissionsサブルーチンを呼び出して、指示されたアイテムに対するACPを計算することができる。このルーチンは、図13Bに関して以下でさらに説明される。
ブロック1310で、ルーチンは、計算されたACPが、アイテムが置かれているオペレーティングシステムにクエリを実行することなどにより、アイテムに対し実際に指示されているACPと異なるかどうかを判定する。計算されたACPが実際のACPと異なる場合、ルーチンはブロック1312から続く。そうでない場合、ルーチンはブロック1314から続く。
ブロック1312で、ルーチンは、アイテムに対する実際のACPを計算されたACPに設定する。例えば、ルーチンは、アイテムが置かれているオペレーティングシステムのアプリケーションプログラムインターフェースを呼び出してアイテムのACPを設定することができる。それとは別に、またはそれに加えて、ルーチンは、アイテムのACPを格納するデータベースまたは他のアプリケーションのアイテムのACPを変更することができる。例えば、ファシリティは、電子メールサーバにより提供されるアプリケーションプログラムインターフェースを呼び出して電子メールアイテムのACPを設定することができる。
ブロック1314で、ルーチンは、指示されたアイテムに対するACPが変更されたときにそのACPリセットを必要とする場合もあるアイテムの集合を決定する。例えば、ピンボードコレクションにピン止めされた情報アイテムおよびピンボードコレクションは、ACPリセットを必要とする可能性がある。他の実施例では、指示されたアイテムとのinherit関係を持つ他のアイテムは、そのACPリセットを必要とすることがある。
ブロック1316および1320のループの間で、ルーチンは、決定されたアイテムの集合のそれぞれのアイテムに対するACPをリセットする。ブロック1316で、ルーチンは、その集合からアイテムを選択する。
ブロック1318で、ルーチンは、set_permissionsサブルーチンを呼び出すことによりアイテムに対するACPを設定するが、これについては図13Cに関して以下で説明する。ルーチンは、選択されたアイテムの指示をパラメータとしてset_permissionsルーチンに渡すことができる。
ブロック1320で、ルーチンは、その集合から他のアイテムを選択する。集合のすべのアイテムが、すでに、ループによって処理された場合、ルーチンはブロック1322から続き、そこで戻る。そうでない場合、ルーチンはブロック1318から続く。
図13Bは、ACPを計算するため様々な実施形態におけるファシリティにより使用されるcompute_access_control_permissionsルーチンを例示する流れ図である。このルーチンは、アイテムの指示をパラメータとして受け取るブロック1340から始まる。アイテムは、例えば、情報アイテムまたはピンボードコレクションとすることができる。
ブロック1342で、ルーチンは、指示されたアイテムについて明示的に定義されているACPの集合を決定する。例えば、ルーチンは、アイテムが置かれているオペレーティングシステムにクエリを実行するか、またはデータベース内の明示的ACPを調べることにより明示的ACPを決定することができる。ルーチンは、ACPを含むように変数(「P」と示されている)を設定する。
ブロック1344で、ルーチンは、ACPを指示されたアイテムに伝播する、または指示されたアイテムがACPを継承するアイテムの集合を決定する。例えば、ルーチンは、ブロック1306に関して上で説明されているデータベースにクエリを実行することによりこの情報を決定することができる。
ブロック1346および1350のループの間で、ルーチンは、決定されたアイテムの集合のすべてのアイテムのACPに対し和演算(union operation)を実行することにより指示されたアイテムに対するACPを計算する。ルーチンは、ブロック1346でその集合からアイテムを選択する。
ブロック1348で、ルーチンは、ブロック1342で設定された変数(例えば、「P」)に含まれるACPと選択されたアイテムのACPとの間で和演算を実行する。この和(union)の結果は、変数に格納され、ループのその後の反復のときに再利用される。
ブロック1350で、ルーチンは、リストから他のアイテムを選択する。すべてのアイテムが処理されたら、ルーチンは、ブロック1352から続き、そこで、現在変数に格納されている、計算されたACPを返す。そうでない場合、ルーチンはブロック1348から続く。
図13Cは、ACPを設定するため様々な実施形態におけるファシリティにより使用されるset_permissionsルーチンを例示する流れ図である。このルーチンは、アイテムの指示をパラメータとして受け取るブロック1360から始まる。アイテムは、例えば、情報アイテムまたはピンボードコレクションとすることができる。
ブロック1362で、ルーチンは、図13Bに関して上で説明されているcompute_access_control_permissionsサブルーチンを呼び出して、指示されたアイテムに対するACPを計算する。
ブロック1364で、ルーチンは、計算されたACPが、アイテムが置かれているオペレーティングシステムにクエリを実行することなどにより、アイテムに対し実際に指示されているACPと異なるかどうかを判定する。計算されたACPが実際のACPと異なる場合、ルーチンはブロック1366から続く。そうでない場合、ルーチンはブロック1378から続く。
ブロック1366で、ルーチンは、アイテムに対する実際のACPを計算されたACPに設定する。例えば、ルーチンは、アイテムが置かれているオペレーティングシステムのアプリケーションプログラムインターフェースを呼び出してアイテムのACPを設定することができる。それとは別に、またはそれに加えて、ルーチンは、アイテムのACPを格納するデータベース中のアイテムのACPを変更することができる。
ブロック1368で、ルーチンは、そのアイテムがピンボードコレクションであるかどうかを判定する。ルーチンがこの判定を行うのは、ピンボードコレクションに関連付けられているアイテムがACPリセットを必要とすることがあるからである。アイテムがピンボードコレクションである場合、ルーチンはブロック1370から続く。そうでない場合、ルーチンはブロック1378から続く。
ブロック1370で、ルーチンは、許可リセットを必要とする可能性のあるピンボードコレクションに関連付けられているアイテムの集合を決定する。例えば、ルーチンは、ブロック1306に関して上で説明されているデータベースにクエリを実行することによりこの情報を決定することができる。
ブロック1372および1376のループの間で、ルーチンは、決定された集合内のアイテムに対するACPを設定する。ルーチンは、ブロック1372でその集合からアイテムを選択する。
ブロック1374で、ルーチンは、set_permissionsルーチンを再帰的に呼び出して、ルーチンが指示として与える、選択されたアイテムに対しACPを設定する。
ブロック1376で、ルーチンは、他のアイテムを選択する。すべてのアイテムが処理されたら、ルーチンはブロック1378から続く。そうでない場合、ルーチンはブロック1374から続く。
ブロック1378で、ルーチンは戻る。
様々な実施形態において、ファシリティを使用することで、ユーザは、ピンボードコレクションがピンボードコレクションにピン止めされていない許可を継承すべき継承元の情報アイテムを指定することができる。
様々な実施形態において、ファシリティを使用することで、管理者、作成者、受信者、または他のユーザなどのユーザは、許可を修正するときに適用される「マスク」を指定することができる。ファシリティがマスクを適用しても、すべての許可を適用するとは限らない。マスクの実施例としては、ノーマルとカスタムがある。マスクがノーマルである場合、ファシリティは、上述のように許可を計算することができる。ユーザは、最大のノーマルマスクを指定することができる。例えば、ユーザは、「share」の最大マスクを指定することができる。これがその場合であれば、ファシリティは、viewおよびshare許可を適用できるが、full許可はshare許可以下であるためfull許可を適用できない。マスクがカスタムである場合、ファシリティは、ユーザによって指定されたカスタムマスクを適用することができる。
様々な実施形態において、ファシリティは、情報アイテムを含むファイルなどのファイルに対し指示されたオペレーティングシステム許可を修正する。例えば、ファシリティは、ファイルに対するオペレーティングシステム許可を、そのファイルに対応する情報アイテムを含むピンボードコレクションがそのファイルに対する読み取り特権を持たない受信者と共有される場合に修正することができる。
様々な実施形態において、ファシリティは、許可を「インバンド」で変更することができるか、または他のアプリケーション、またはユーザによる手動などの方法により許可は「アウトオブバンド」に変更できる。「インバンド」変更の実施例では、ピンボードコレクション、情報アイテム、またはファイルに対する許可は、ピンボードコレクションが受信者と共有される場合に変更できる。「アウトオブバンド」変更の実施例では、ユーザは、オペレーティングシステムコンポーネントまたはコマンドを使用して情報アイテムに対する許可を変更することができる。いずれかが発生した場合、ファシリティは、ピンボードコレクションまたは情報アイテムについて許可を再計算することができる。
様々な実施形態において、ファシリティは、すでにACPが再計算されているアイテムを追跡することができる。次いで、ループまたは再帰演算によりファシリティがアイテムを再訪したときに、ファシリティは、再訪されたアイテムに対しACPを再計算する必要はない。
図14は、情報アイテムへの変更を監視するため様々な実施形態におけるファシリティにより使用されるmonitor_changesルーチンを例示する流れ図である。様々な実施形態において、ファシリティは、monitor_changesルーチンを使用して、コンテンツ変更または許可変更などの情報アイテムの変更を検出する。ルーチンはブロック1402から始まる。
ブロック1404で、ルーチンは、ルーチンの最後の呼び出し以降に情報アイテムが変更されたかどうかを判定する。ルーチンは、コンテンツ変更、許可変更、または他の変更追跡することができる。そのような場合、ルーチンはブロック1406から続く。そうでない場合、ルーチンはブロック1408から続き、そこで戻る。
ブロック1406で、ルーチンは、情報アイテムへの変更をログに記録する。例えば、ルーチンは、変更のデータベースに変更を記録することができる。様々な実施形態において、ルーチンは、情報アイテムが変更されたが、実際の変更ではないことを示す指示をログに記録することができる。
ブロック1408で、ルーチンが戻る。
様々な実施形態において、monitor_changesルーチンは、ソースコンピューティングデバイスにより実行される。ソースコンピューティングデバイスは、変更を他のコンピューティングデバイスに伝播するデバイスである。例えば、ソースコンピューティングデバイスは、変更を他のコンピューティングデバイスにレプリケートする。
様々な実施形態において、コンテンツへの変更または情報アイテムの許可に基づき追加のプロセスを実行できる。例えば、ユーザXが情報アイテムを見られるように情報アイテムに対する許可が変更されたときにユーザXがドキュメントをレビューすべきであることを示すタスクを作成するワークフローアプリケーションを開発することが可能である。そこで、ファシリティでは、許可変更などの変更の監視に基づくアプリケーションを構築する一般的アーキテクチャを記述する。
様々な実施形態において、情報アイテムの属性は、ACPと同様にして伝播することができる。例えば、バージョンロック情報属性は、伝播(または継承)できるので、ユーザがピンボードコレクションを「ロック」すると、そのロックは、ロックされているピンボードコレクションおよびそれが含む他のピンボードコレクションに含まれるすべての情報アイテムに適用することが可能である。ロックがピンボードコレクションに適用された場合、ファシリティは、URLを選択すると例えばピンボードコレクションがロックされていたときに利用可能であったバージョンに対応する情報アイテムの一バージョンをロードすることになるように情報アイテムを識別するURL(または他のリンク)を置き換えることができる。このような場合、ファシリティは、「ロックバージョン」を作成し、URLに渡すことができる。このロック機能は、ロックされているピンボードコレクションに含まれるピンボードコレクションにおけるすべての情報アイテムに再帰的に実行できる。
図15は、変更をレプリケートするため様々な実施形態におけるファシリティにより使用されるreplicateルーチンを例示する流れ図である。ファシリティは、ときどきこのルーチンを実行して、ソースコンピューティングデバイスからサーバまたはクライアントなどの他のコンピューティングデバイスに変更をレプリケートすることができる。ルーチンはブロック1502から始まる。
ブロック1504と1510との間で、ルーチンは、情報アイテムをレプリケートする。ブロック1504で、ルーチンは、変更された情報アイテムを選択する。例えば、ルーチンは、図14のmonitor_changesルーチンにより作成されたログから情報アイテムを選択することができる。
ブロック1506で、ルーチンは、変更された情報アイテムの更新のみをレプリケートすることが可能かどうかを判定する。例えば、いくつかのドキュメントでは、ドキュメントに加えられた改訂または更新を格納することができる。これがその場合であれば、ドキュメント全体をレプリケートするよりも更新のみをレプリケートするほうが効率的であると思われる。更新のみをレプリケートすることが可能な場合、ルーチンはブロック1508から続く。そうでない場合、ルーチンはブロック1514から続く。
ブロック1508で、ルーチンは更新をレプリケートとする。例えば、ルーチンは、更新をコンピューティングデバイスに与えることができる。
ブロック1510で、ルーチンは、他の情報アイテムを選択する。すべての情報アイテムが処理されたら、ルーチンはブロック1512から続き、そこで戻る。そうでない場合、ルーチンはブロック1506から続く。
ブロック1514で、ルーチンは、情報アイテムをレプリケートする。例えば、ルーチンは、情報アイテムを他のコンピューティングデバイスに渡すことができる。
様々な実施形態において、情報アイテムまたは更新のレプリケート先のコンピューティングデバイスは、更新をバッチ処理することができる。例えば、コンピューティングデバイスは、ローカルコピーを更新する前に多数の更新または情報アイテムを受け取る可能性がある。様々な実施形態において、更新または情報アイテムを受け取るコンピューティングデバイスは、更新または情報アイテムを他のコンピューティングデバイスに転送することができる。例えば、情報アイテムが特定のユーザと共有されていることが検出されると、コンピューティングデバイスは、その情報アイテムをそのユーザに対応するサーバに転送することができる。
コンピューティングデバイスは、更新をXMLアップデートグラムとして共有することができる。XMLアップデートグラムは、XMLメッセージ内の更新の指示を与えるものである。
ファシリティは、例えば、様々なプロトコルを使用して、アップデートグラムを送信することによりレプリケーションを実行することができる。例えば、ファシリティは、分散オーサリングおよびバージョニング(「DAV」)プロトコルの一変更形態を含むHTTPプロトコルを使用してレプリケーションを使用可能にすることができる。ファシリティは、コンピューティングデバイスのネットワーク接続をチェックすることにより、ユーザがファイヤウォールの「内側」にいるのか、「外側」にいるのかを検出する。コンピューティングデバイスがファイヤウォールの内側にあるか、または外側にあるのかに基づいて、コンピューティングデバイスは使用すべきURLを決定する。例えば、コンピューティングデバイスがファイヤウォールの内側にある場合、URLで、http://internalserver/shareなどのローカルサーバ名を参照することができる。コンピューティングデバイスがファイヤウォールの外側にある場合、URLで、http://www.companyname.com/shareなどのローカルサーバ名を参照することができる。
図16は、ファシリティで複数の検索プロバイダを使用するためのコンポーネントおよび複数の態様を例示するブロック図である。様々な実施形態において、ファシリティは、オペレーティングシステムの変更ジャーナル1602を使用する。例えば、MICROSOFT WINDOWS(登録商標)オペレーティングシステムを使用するように構成されているシステム一実施形態では、「NT変更ジャーナル」を使用することができる。オペレーティングシステムの変更ジャーナルは、ファイル、およびオペレーティングシステムの他のオブジェクトへの変更を記録するものである。変更ジャーナルを使用することにより、ファシリティは、ファイル、ピンボードコレクション、情報アイテムなどへの変更を検出することができる。
次いで、ファシリティは、様々なインデックスに変更の指示を伝播する。例えば、ファシリティは、ドキュメントへの変更をテキストインデックス1604に伝播し、ファシリティにより使用されるスキーマへの変更をメタデータインデックス1606に伝播し、ドキュメントのロケーションの変更をピンボードコレクションインデックス1608に伝播し(例えば、ドキュメントが起動されたときにリンクを修復するため)、ACPへの変更をアクセス制御インデックス1610に伝播し、ファイルのロケーションに関係する変更をURL解決インデックス1612に伝播することができる。様々な実施形態において、レプリケーションエンジン(図に示されていない)は、変更ジャーナルから変更をネットワーク1614上の、サーバなどのコンピューティングデバイスにレプリケートすることができ、これにより、ネットワーク間で情報を最新状態に保つことができる。
インデックスからの情報が必要である限り、または様々な他の時点において、ファシリティは、インデックスに含まれる、またはインデックスより指示される情報をマージして、結果1616を生成する。この情報を検索プロバイダにより与えられた情報と組み合わせることにより、ファシリティは、検索結果を作成する。例えば、ファシリティは、インデックスに含まれるか、またはインデックスにより示される情報を、RSS検索プロバイダ1618、Web検索プロバイダ1620、または1つまたは複数のサードパーティの検索プロバイダ1622により提供される情報とマージすることができる。ファシリティは、様々な通信プロトコルを使用して、RSS、Web、または他の検索プロバイダと通信することができる。
ファシリティは、検索結果を、内部形式またRSSなどの正規化された形式で格納することができる。
様々な実施形態において、ファシリティは、変換1624を適用することにより検索結果を変換する。変換は、HTMLドキュメント1626などの様々な種類のドキュメントのどれかを生成することができる。
図17は、ファシリティにより使用されている様々なコンポーネントを例示するブロック図である。様々な実施形態において、これらのコンポーネントを単独でまたは一緒に使用して、ファシリティのいくつかの機能を利用することができる。ファシリティは、さらに、例示されても、本明細書で説明されてもいない追加のコンポーネントをも使用することができる。
このファシリティを使用するアプリケーションが広範にわたる情報をロードまたは操作できるように、統一データアクセスコンポーネント1702は、異種データソースに格納され、異なるデータ型を有するデータで機能する。統一データアクセスコンポーネントは、データ追加のソースおよび型を使用して機能するような形で拡張可能である。
クエリ集約コンポーネント1704は、異なるソースからのクエリ結果を組み合わせて、統一された結果を生成する。クエリ集約コンポーネントは、複数のクエリプロトコルおよび同期または非同期のレスポンスとともに機能し、それらの結果に基づき内部形式で抜粋を提示することができる。
リレーショナルインデックスコンポーネント1706は、情報アイテムに基づいてリレーショナルインデックスを構築する。これらのインデックスを使用することにより、アプリケーションまたはユーザは、インデックス付けされたデータに対しフルテキストクエリを実行することができ、これにより、戻るリンクと関連リンクを使用することができるようになる。戻るリンクは、アイテムがピン止めされたピンボードコレクションを識別するリンクである。
アクセス制御エンジン1708は、データベース(例えば、ピンボードコレクションおよび情報アイテムに対するACPを格納するデータベース)に基づいてアクセス制御フローグラフを作成し、その作成されたアクセス制御フローグラフに基づいてACPを追跡し、更新する。このコンポーネントを使用すると、ファシリティは、適切なユーザが情報を表示し、修正し、共有できるようにピンボードコレクションおよび情報アイテムに対する許可の設定またはリセットを行うことによりリッチコラボレイティブユーザモデル(rich collaborative user model)を形成することができる。
表示およびオーサリングフレームワーク1710では、検索結果からユーザインターフェースを生成し、編集を可能にする。例えば、表示およびオーサリングフレームワークは、XSLを使用して組み合わせた抜粋を変換することによりユーザインターフェースを作成することができる。ユーザインターフェースは、注釈を受け取るためのテキスト領域を備えることができる。
レプリケーションコンポーネント1712を使用することで、ファシリティは、継ぎ目のないオンラインおよびオンライン機能を実現できる。これにより、サーバ間のレプリケーション、およびクライアントとサーバとの間のレプリケーションが可能になる。例えば、異なるドメインのユーザが情報にアクセスできるようにサーバ間でピンボードコレクションおよび情報アイテムをレプリケートすることができる。レプリケーションコンポーネントは、サーバとクライアントとの間でピンボードコレクションおよび情報アイテムをレプリケートし、これによりクライアントがサーバから切断されたときにユーザが情報を継ぎ目なく表示することができる。例えば、ユーザは、様々なピンボードコレクションをオフラインで利用可能にするように指示することができる。これが実行されると、ピン止めされた情報アイテムおよびピンボードコレクション(およびそれらのピンボードコレクションにピン止めされた情報アイテム)も、オフラインで利用可能であってよい。データベース検索、電子メール、または他の情報アイテムの結果も、静的な方法でオフラインで使用可能にできる。レプリケーションを実行するときに、レプリケーションコンポーネントは、ACPが適切に強制されることを保証する。クライアントがサーバに再接続された場合、レプリケーションコンポーネントは、オフラインの間に作られた注釈などのオフライン更新をサーバとの間で同期させることができる。
容易に理解できるように、ファシリティは、電子メールのアクセスのしやすさとインターネットブラウザのナビゲーションのしやすさおよび検索の簡素さを併せ持ち、情報交換を行わせることができる。ファシリティを使用することで、ユーザは、更新可能で、検索可能な、情報アイテムへのリンクを含むピンボードコレクションを含む個人情報ネットワークを作成することができる。これらのピンボードコレクションおよび情報アイテムは、注釈を付け、安全な方法で共有することができる。
様々な実施形態において、ファシリティは、特定の情報アイテムを見つけるために複数の検索を可能にすることを含む、様々なデータ型(例えば、電子メール、データベース、ファイルシステムなど)およびデータソース(インターネット、イントラネット、パーソナルコンピューティングデバイスなど)にまたがって検索を実行することを可能にする。
さらに、ファシリティを使用することにより、特定のロケーションを参照することなく情報アイテムおよびピンボードコレクション(例えば、ドキュメント)を容易に特定することができる。ユーザは、URL、名前、説明、コンテンツなど、探している情報に関係する何らかの情報を提供することができ、ファシリティは、ユーザが情報を表示する十分な許可を得ている場合に、情報を素早く特定し、取り出す。また、ファシリティを使用すると、ユーザは、情報を共有する十分な許可を得ている場合に、情報を他のユーザと共有することができる。
様々な実施形態において、ファシリティは、ピンボードコレクション内の戻るおよび進むリンクを決定する機能を備える。例えば、ファシリティは、特定の情報アイテムがどのピンボードコレクションにピン止めされているかを判定することができる。ファシリティは、ピンボードコレクションおよび情報アイテムを追跡するためにファシリティが使用するデータベースに基づきこれらの関係を決定することができる。
様々な実施形態において、バックグラウンドエージェントは、ピンボードコレクションを作成するために使用されるクエリと一致する情報アイテムが修正または追加されていることをピンボードコレクションの作成者または受信者に通知する。次いで、作成者または受信者は、適宜、修正された、または追加された情報アイテムを含むようにピンボードコレクションを修正することができる。これらの本実施形態では、バックグラウンドエージェントは、格納されているクエリを間欠的に実行することができる。それとは別に、バックグラウンドエージェントは、情報アイテムへの変更に関係するイベントを受け取ることができる。次いで、バックグラウンドエージェントは、電子メールメッセージを送信することなどにより、作成者、受信者、またはその両方に通知することができる。
様々な実施形態において、ファシリティは、情報アイテムまたは情報アイテムもしくはピンボードコレクションに関係するACPが変更されたことを検出した場合に様々なアクションを呼び出す。例えば、ピンボードコレクションがユーザの特定のグループに属しているユーザと共有されていることを検出すると、ファシリティは、管理ユーザが共有を承認することを必要とするワークフローアプリケーションを呼び出す。ファシリティは、様々な手段を使用してコンテンツおよびACPへの変更を検出することができる。例えば、ファシリティは、変更通知を受け取るようにオペレーティングシステムに登録することができるか、またはオペレーティングシステムの変更ログをポーリングすることができる。変更が検出されると、ファシリティは、ファシリティに登録されているワークフローコンポーネントを呼び出す。
様々な実施形態において、ファシリティは、情報アイテム、ピンボードコレクション、および許可の1つまたは複数のインデックスを構築する。インデックスを使用することで、ファシリティは、指定された一組の許可を持つ情報アイテムを見つけることができる。例えば、インデックスを使用すると、ファシリティは、所定のユーザと共有されているすべての情報アイテムを見つけることができる。
様々な実施形態において、ファシリティは、検索とドキュメントオーサリングキャンバスとを統合することができる。これらの実施形態では、オーサリングアプリケーションのユーザは、アプリケーションのコンテキストの外部の検索プロバイダを使用して検索を実行し、検索の結果を素早く、簡単に、アプリケーションでオーサリングされているドキュメント内に埋め込むことができる。したがって、例えば、ワープロドキュメントまたはスプレッドシートのユーザは、1回のアクションで検索を実行し、検索の結果をユーザがオーサリングしているドキュメントまたはスプレッドシートに追加することができる。
様々な実施形態において、ファシリティは、レプリケーションを使用して拡張されうる。例えば、ファシリティは、ピンボードコレクションおよびその基礎となるデータを、複数のインターネットドメイン内に置かれているサーバなど、複数のサーバにレプリケートすることができる。ピンボードコレクションおよびその基礎となるデータがレプリケートされるときに、一方のドメインのユーザは、ピンボードコレクションを共有または受け取るために他方のドメインのサーバにアクセスする必要はない。
様々な実施形態において、ファシリティは、作成者または受信者により与えられた検索条件を使用して検索するときに検索プロバイダを自動的に発見し、適宜、検索プロバイダを自動的にインストールする。その検索条件を使用して特定された情報では、検索プロバイダのインストール場所とインストール方法を識別する。
様々な実施形態において、ファシリティは、「コンテナ」と考えることができる様々な種類のドキュメントとともに機能する。コンテナは、他のドキュメントまたは他のドキュメントへの参照を含むドキュメントである。コンテナの実施例としては、例えば、メディアプレイリスト、他のファイルおよびコンピューティングシステム上に他のファイルをインストールするための命令を含むインストレーションファイルなどがある。コンテナは、ピンボードコレクションに類似しているため、ファシリティは、任意の種類のコンテナとともに動作する。ユーザは、コンテナに対する許可を操作することによりコンテナ内のファイルへのアクセスを制御することができる。例えば、受信者はコンテナへの表示アクセス権を持たなければならないとユーザが指示した場合、ファシリティは、さらに、コンテナに含まれる、またはコンテナにより指示されるすべてのファイルへの表示アクセス権を与える。さらに、コンテナに他のコンテナが含まれる場合、ファシリティは、許可を含まれるコンテナにより指示されるファイルに再帰的に適用することができる。さらに、ファシリティを使用することで、サードパーティはコンテナに含まれる情報アイテムにより指示されるロジックを備えることでファシリティを拡張することができるため、ファシリティは、コンテナに含まれるファイルの追加のファイル形式を自動的に認識することができる。様々な実施形態において、ファシリティを使用することで、ユーザは、ピンボードコレクション(例えば、コンテナ)が許可を継承すべき継承元の特定の情報アイテムを指示することができる。
様々な実施形態において、ファシリティを使用することで、ユーザは、ユーザから利用できる情報アイテムおよびピンボードコレクションに基づいて「個人用ポータル」を作成することができる。例えば、ユーザは、ピンボードコレクションをリモートで利用できるように指示することができる。ピンボードコレクションがリモートで使用できるように有効にされた場合、ユーザは、MICROSOFT OUTLOOK WEB ACCESSを使用してMICROSOFT EXCHANGE SERVERに格納されている電子メールにリモートアクセスするのと同様の方法でリモートコンピューティングデバイスから個人用ポータルにアクセスすることができる。
様々な実施形態において、ファシリティは、ドキュメントに基づきリレーショナルインデックスを生成するための汎用モデルを形成する。リレーショナルインデックスを、検索プロバイダにより構築されたフルテキストインデックスとともに使用することで、ファシリティは、類似の情報を表す様々なスキーマから抽出されたデータを生成し、維持することができる。例えば、ファシリティは、ダッシュボード、プレイリスト、htmlファイル、配備ファイルなど、リンクの集まりである任意の種類のドキュメントから導かれる情報を使用してリンクインデックスを構築する。ファシリティは、このリンクインデックスを使用して、ドキュメントの関係を決定することなどにより、上述の戻るリンクおよび関係リンクを作成することができる。この汎用モデルは、さらに、連絡先情報テーブルまたはアプリケーションセットアップテーブルなどの、他のカスタムインデックスを生成するためにも使用することができる。連絡先情報テーブルは、例えば、ライトウェイトディレクトリアクセスプロトコルサーバに初期値を入れるために、または共有ドキュメントに基づいて連絡先のリストを作成するために使用することができる。アプリケーションセットアップテーブルは、例えば、ソフトウェアプログラムの追加または削除を行うためにオペレーティングシステム機能において使用できるアプリケーションセットアップリポジトリを作成するために使用できる。
様々な実施形態において、ファシリティは、電子メールのアクセスのしやすさ、インターネットブラウザのナビゲーションのしやすさ、および検索の簡素さを併せ持ち、これによりコラボレーションのため共有、更新、および利用されうる情報のコレクションを作成することができる。コラボレーションは、情報アイテムに関係するアクセス制御許可を定義することにより開始され、また制御されるようにできる。
上で述べた説明から明らかなように、ファシリティを使用することで、作成者は検索を一次ナビゲーションメタファーとするピンボードコレクション(例えば、ポータル)を構築することができる。従来のホステッドシステムとは異なり、このファシリティを使用することで、ポータルはエントリポイントなしで存在することができる。つまり、受信者は、ポータルのロケーションを必要とすることも、さらには、特定のポータルがそのロケーションを見ることができるように存在していることを意識する必要もない。ファシリティは、ポータルに含まれる情報アイテムおよびピンボードコレクションの追加、削除、または修正を容易に行えるという点で、ポータルを組織的に作成し、管理する。ここでもまた、従来のホステッドシステムとは異なり、管理者は、どのユーザがアクセス権を持つべきであり、どのユーザが持つべきでないかを指示する必要はない。
このファシリティにより、さらに、「共有ボックス」と呼ばれる概念を使用できるようになる。共有ボックスは、1つまたは複数のピンボードコレクションを格納し、これにより、そのユーザはピンボードコレクションのどのようなデータを表示し、整理し、操作するかを制御することができる。ユーザは、いくつかのピンボードコレクションが情報アイテムを表示すべきであり、他のピンボードコレクションは「折り畳まれた」状態でのみリストされるべきであることを指示することができる。ユーザは、後で、折り畳まれたピンボードコレクションを展開して、そのコンテンツを表示するようにできる。ユーザは、指定された属性を持つピンボードコレクションまたは情報アイテムを含む領域を指示することにより共有ボックスを編成することができる。例えば、共有ボックスは、指定された時間枠内で共有されるすべてのピンボードコレクションを表示する領域、特定のユーザと共有されているピンボードコレクションを表示する他の領域などを有することができる。いくつかの実施形態では、ファシリティは、共有ボックスとともに「AJAX」ユーザインターフェース設計を使用することができる。AJAXは、サーバと通信し、ユーザインターフェースを動的に更新するAJAXエンジンを使用することによりユーザインターフェースを定義するアーキテクチャを定義するものである。ユーザは、共有ボックス内に表示されるピンボードコレクションに対し様々なアクションを実行することができる。例えば、ユーザは、共有ピンボードコレクションに応答する、受け取った、または作成されたピンボードコレクションを他のユーザと共有する、ピンボードコレクションを削除する、ピンボードコレクションに対する許可を指示するなどを行うことができる。
当業者であれば、上述のファシリティは、様々な方法で拡張できることを容易に理解できる。例えば、ファシリティは、連絡先情報などの情報アイテムに含まれる様々な種類の情報に対しインデックスを作成し、アプリケーションまたはサービス(例えば、共有連絡先アプリケーションまたはライトウェイトディレクトリアクセスプロトコルサーバ)を介してデータにアクセスするためのAPIまたはユーザインターフェースを備えることができる。いくつかの実施形態では、ファシリティは、そのようなアプリケーション用のユーザインターフェースを実現するように適合させることができる。
様々な実施形態において、ファシリティは、ファイルシステムを使用して、情報アイテムおよび他のオブジェクトを格納する。これらの実施形態では、基礎となるオペレーティングシステムは、これらの情報アイテムまたはオブジェクトが変更されたとき(例えば、修正、作成、削除などが行われたとき)にそのことをファシリティに通知する。ファシリティは、情報アイテムおよびオブジェクトに関連付けられているインデックスを作成し、管理し、オペレーティングシステムからその通知を受け取ったときに、インデックスをそれに応じて修正する。他のアプリケーションをおよびサービスは、インデックスおよび基礎となる情報アイテムまたはオブジェクトを使用することができる。例えば、メッセージングクライアントプログラム(例えば、MICROSOFT OUTLOOK)は、電子メールの作成またはレビューのためファイルシステム内に置かれているファイルを使用できるとよい。電子メールメッセージ(または一般に、情報アイテムおよびオブジェクト)をファイルに格納することにより、ファシリティは、オフライン使用を可能にする。
様々な実施形態において、ファシリティは、ユーザと「共有」されるすべての情報に対しクエリを実行するために単一の場所を形成する。これにより、ファシリティプログラムは、同じ共有データについて新しいインデックスを構築し、データを意味のある形で取り出すためのアプリケーションインターフェースを公開することができる。
ファシリティは、さらに、企業向けに他のアプリケーション特有の「サーバ」を作成するように容易に拡張することができる。例えば、ファシリティは、ソフトウェアリポジトリサーバ、ディレクトリプロバイダなどを作成することができる。ソフトウェアリポジトリサーバは、様々なソフトウェアアプリケーション、その更新などを格納する。ユーザがオペレーティングシステムコンポーネントを使用してプログラムの追加またはインストールを行う場合、ファシリティは、ユーザがプログラムまたは更新をインストールするための十分なACPを有しているかどうかを簡単に判定し、次いで、プログラムまたは更新をインストールするためオペレーティングシステムコンポーネントに供給することが可能である。管理者(または十分な特権を有する他のユーザ)は、アプリケーションまたは更新を必要とするユーザとアプリケーションを共有することができる。ディレクトリプロバイダは、例えば、プリンタに関係する情報を格納することができる。管理者またはユーザは、プリンタをプリンタへのアクセスを必要とするユーザと共有することができる。ユーザがオペレーティングシステムのコンポーネントを使用してプリンタを追加する場合、ファシリティは、共有プリンタの指示を与えることができる。
特定の一実施例では、ファシリティは、企業またはビジネスソフトウェアの「段階的」配備で使用することができる。コンテナは、ユーザのコンピューティングデバイス上にインストールされるファイルの指示を含む。このコンテナは、いくつかのクラスのユーザ(例えば、初期の採用者、後期の採用者など)と共有され、ソフトウェアをそれらのユーザクラスに段階的に配備することができる。
パーソナル化可能情報ネットワークは、それとは別に、個人情報ネットワークまたはパーソナル化情報ネットワークと呼ぶことができる。
様々な実施形態が上述の環境に関して説明されているが、当業者であれば、ファシリティは単一のモノリシックコンピュータシステムだけでなく、様々な方法で接続されているコンピュータシステムまたはデバイスの様々な他の組合せを含む様々な他の環境において実装することができることを理解するであろう。
当業者であれば、流れ図が例示している、明細書で説明されている記述に関係するロジックは、様々な方法で変更できることを理解するであろう。例えば、ブロックの順序を変更することができる、ロジックを並列実行することができる、いくつかのロジックを省略することができる、または他のロジックを追加することができるといったことが考えられる。
いくつかの図およびその説明は、人が理解しやすいように意図されているが、当業者であれば、情報を格納するためにファシリティにより使用される実際のデータ構造は、例えば、異なる方法で編成することができるという点で示されているテーブルと異なることがある、含まれる情報は図に示されているのよりも多い場合も少ない場合もある、圧縮および/または暗号化されうるといったことを理解するであろう。
ユーザインターフェースは、いくつかのユーザインターフェース要素とともに例示されているが、当業者であれば、ユーザインターフェースを再配列することができる、追加のユーザインターフェース要素を追加できる。またはユーザインターフェース要素を取り除くことができるということを理解するであろう。当業者であれば、さらに、様々なユーザインターフェース要素は、実質的にファシリティの機能性に影響を及ぼすことなく次々に置き換えることができることも理解するであろう。
当業者であれば、上述のファシリティは、様々な方法で直接的に適合させるか、または拡張することができることを容易に理解するであろう。例えば、ファシリティは、様々なインデックス機能または検索プロバイダを使用することができる。これらのインデックス機能または検索プロバイダは、ユーザのデスクトップコンピュータまたはサーバなどのリモートコンピューティングデバイス上で動作しうる。ファシリティは、ドキュメント、Webログ(「ブログ」)、Webページ、様々なソースからのデータ、画像、マルチメディアなどの様々な情報タイプで動作することが可能である。前記の説明では、特定の実施形態を参照しているが、本発明の範囲は、請求項および引用されている要素のみにより定義される。