JP4896726B2 - プリファレンスの条件の評価に基づいてアクションを実行するためのシステム、方法および記憶装置 - Google Patents

プリファレンスの条件の評価に基づいてアクションを実行するためのシステム、方法および記憶装置 Download PDF

Info

Publication number
JP4896726B2
JP4896726B2 JP2006536575A JP2006536575A JP4896726B2 JP 4896726 B2 JP4896726 B2 JP 4896726B2 JP 2006536575 A JP2006536575 A JP 2006536575A JP 2006536575 A JP2006536575 A JP 2006536575A JP 4896726 B2 JP4896726 B2 JP 4896726B2
Authority
JP
Japan
Prior art keywords
user
preference
event
condition
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006536575A
Other languages
English (en)
Other versions
JP2007518151A (ja
Inventor
エイチ.ガーバー ロバート
ナイト ホリー
エム.クラシュナ マラリ
ニラカンタン ニランジャン
アビリア シャハフ
パザー シャイアマラン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2007518151A publication Critical patent/JP2007518151A/ja
Application granted granted Critical
Publication of JP4896726B2 publication Critical patent/JP4896726B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Transfer Between Computers (AREA)

Description

本発明は、全般的にはコンピュータシステムに関し、具体的には、コンピュータシステムをパーソナライズするシステムおよび方法に関する。
本願は、参照によってその全体を本明細書に組み込まれる、2003年10月24日出願の米国特許仮出願第10/693,735号明細書、名称「SYSTEM AND METHOD FOR PREFERENCE APPLICATION INSTALLATION AND EXECUTION」の優先権を主張するものである。
コンピュータおよびコンピューティング関連テクノロジのユーザは、通常、2つの別個のカテゴリすなわち、高い技量および知識を有する個人とそれ以外に分けられる。技量および知識を有する個人は、豊富な形でコンピュータを使用し、思いのままにこれらを混合して、プログラムを作り、豊富で価値のある挙動を容易にする方法を知っている。残りのコンピュータユーザの世界は、技量および知識を有する個人のなすがままである。というのは、これらのユーザが、必要に合わせてコンピュータを働かせるための知識、情報、または能力への簡単または安価なアクセスを拒否されているからである。
テクノロジが、アクセスへの障壁を破壊した場合に、コンピューティングの主要なブレークスルーが発生した。メインフレームの世界では、コンピュータが、大企業以外には持つのに高価にすぎた。ミニコンピュータおよびその後のパーソナルコンピュータ(PC)の出現が、コスト障壁を破壊し、コンピュータを小企業および個人が入手可能なものにした。1980年代に、プログラマが、グラフィカルユーザインターフェース(GUI)アプリケーションを作ろうと努力した。豊富で一貫性のあるGUIがなければ、プログラマは、PCユーザに価値のあるアプリケーションを作ることができなかった。Visual Basic革命ならびにコントロールおよびイベントベースGUI構成を使用することによって、アプリケーション開発者が、簡単に豊富なアプリケーションを作れるようになった。その後、より多くのエンドユーザがこれらのアプリケーションを利用できる、有効なサイクルが確立された。1990年代に、エンドユーザは、情報へのアクセスの欠如を克服しようと努力した。インターネットの成長が、この空間を変容させ、ほとんどすべての価値のある情報が、ブラウザを有するすべての人に入手可能になった。しかし、克服を必要とする多数の障壁がまだある。
従来のコンピューティングは、パーソナルではない。いわゆるパーソナルコンピュータに関して、真に「パーソナル」であるものはごくわずかである。ローカルディスクに保管されたデータがパーソナルであることは真実である。しかし、機械の挙動すなわち、機械がユーザの代わりに実行するアクションは、数百万人のユーザの間でほぼ同一である。非常に強力な汎用コンピュータを所有してはいるが、平均的なユーザは、それを、通信エンドポイントして有用な、検索エントリポイントとして有用な、缶詰にされたマスマーケットアプリケーションの実行に有用な静的ツールであるが、それ以外にはこの言葉の真の意味での「パーソナルコンピューティング」を行えないものとして扱う。現在のアプリケーションで使用可能なパーソナライゼーション機能は、可能であり望ましいものの上っ面を撫でるに過ぎない。
さらに、普通のコンピューティングは、自動化されているのではなく、手動であり、ユーザが、判断を行い、適当な時に操作することを必要とする。ほとんどのコンピュータエンドユーザの日常の作業を考慮されたい。とりわけ、エンドユーザは、情報を集め、通信に反応し、通信を開始するか応答し、情報を編成する。コンピュータは、人の間の改善された通信を有し、情報への改善されたアクセスを有する。しかし、コンピュータは、判断を行い、正しい時に操作するという責任からエンドユーザをほとんど解放していない。
さらに、伝統的なコンピューティングは、コンテキスト的ではない。コンピュータソフトウェアは、通常、どちらかといえば静的であり、ユーザの実際のコンテキストに無関係なオプション設定を提供する。
必要なものは、真にパーソナライズされたコンピュータシステムすなわち、エンドユーザの必要およびプリファレンスを知り、この必要ならびにユーザコンテキストによって案内される形で働くシステムである。さらに、コンピュータシステムおよびソフトウェアは、1人または複数のエンドユーザが関心を持つ情報の収集および取捨と、ユーザによって指定される形でのその情報に対する自動的反応とに関するパーソナルアシスタントをすべてのエンドユーザに提供しなければならない。
次に、本発明のいくつかの態様の基本的な理解を提供するために、本発明の単純化された要約を提示する。この要約は、本発明の詳細な概要ではない。本発明の主要な/クリティカルな要素を識別することおよび本発明の範囲を区切ることは、意図されていない。この要約の唯一の目的は、後で提示する詳細な説明の前置きとして、単純化された形で本発明の一部の概念を提示することである。
情報エージェントシステム、アプリケーション、および方法論を、本明細書で開示する。情報エージェントシステムは、情報エージェントアプリケーション(時々本明細書でIAアプリケーションと称する)を実行するプラットフォームを提供する。IAアプリケーションは、エンドユーザがプログラムでき、エンドユーザ実行アシスタントまたはエンドユーザ実行エージェントとして使用することができる。エージェントは、エンドユーザの個人的生産性を大きく高め、デスクトップアプリケーションおよびすべてのパーソナル通信メディア(例えば、携帯電話機、ポケットベル、PDAなど)を統合するように働くことができる。
情報アプリケーションシステムの中心は、データの図式化(schematization)である。図式化は、周知の明確に定義されたパターンでのデータの構造化であり、これによって、複数のアプリケーションが互いを認識し、互いに相互作用できるようになる。情報プロパティ、情報イベント、および判断ロジックのすべてを、図式化することができる。図式化された情報プロパティは、エンドユーザアプリケーションの基礎であるデータ(例えば、電子メール、人、グループ、位置など)を参照する。情報プロパティを図式化して、複数の異なるアプリケーションのデータの一貫性のある解釈を可能にすることができる。情報イベントは、プログラムロジックをアタッチするフックを提供する。これらのイベントは、高水準であり、経験のないエンドユーザによる理解を容易にするために情報フローに結び付けられる。イベントも図式化することができる。さらに、判断ロジックを図式化することができる。エンドユーザは、訓練された開発者ではないので、伝統的なプログラミング言語で記述されたプログラムを期待することは無理である。そうではなく、図式化された論理構成ブロック(例えば、IF−THEN命題)をエンドユーザに提供でき、その結果、エンドユーザが、単純だが豊富な組合せでそれらをつなぎ合わせることによってプログラムできるようになる。データの図式化、情報フック(イベント)、およびエンドユーザプログラミング機能によって、エンドユーザに、エンドユーザロジックを介して結合され、協同作業するアプリケーションの豊富なエコシステムを伴う大きな価値が与えられ、これによって、初心者のエンドユーザがシステムインテグレータになることが可能になる。
さらに、本発明の態様によれば、情報アプリケーションシステムに、重い情報アプリケーションおよび軽い情報アプリケーションの両方をコンパイルでき、実行できる柔軟な実行エンジンが含まれる。重いアプリケーションに、とりわけ、しばしばハイエンドサーバで実行され、高スループットおよびスケーラビリティを必要とするアプリケーションが含まれる。軽いアプリケーションは、しばしば、パーソナルコンピュータなどのより小さいシステムで実行され、短い待ち時間、小さいデータベースフットプリント、および小さいワーキングセットを必要とするアプリケーションである。より小さいアプリケーションでは、待ち時間とスループットの間のトレードオフが、より大きいサーバアプリケーションに関して逆転する。したがって、本発明の実行エンジンは、特定のシステム要件(例えば、短い待ち時間、小さいデータベースフットプリントなど)を強調するためにトレードオフを行うことによって、複数の異なるアプリケーションプラットフォームでアプリケーションをコンパイルでき、実行できるという点で、柔軟である。
本発明のもう1つの態様によれば、エンドユーザプリファレンスまたはルールが、一時に1つの形で開発され、セットで実行される。一時に1つのプログラミングモデルは、開発者にとって最も自然なモデルであり、開発者が、1つのプリファレンスに対して1つのイベントを指定できるようにする。しかし、本発明の態様によれば、このシステムは、一時に1つプログラム宣言を検索し、セット指向の形で実行される条件クラスクエリを作成し、これによって、インデクシングおよび重複削除などの技法を利用する。これは、プリファレンスが非常に効率的な形で評価されると同時に、開発者およびエンドユーザに、一時に1つの形でプログラムを概念化し、記述させるという点で有益である。
本発明のもう1つの態様によれば、新しいアプリケーションインストールのシステムおよび方法が提供される。従来のシステムでは、アプリケーションインストールに、データベースオブジェクト、テーブル、およびストアドプロシージャの急増が含まれる。いくつかの場合に、アプリケーションは、完全に新しいデータベースを作成する。本発明は、基礎テーブルのセットを提供することによって、アプリケーションインストールを単純化し、促進する。アプリケーションをインストールするために、システムは、単に基礎テーブルを更新する。これは、プログラムアクション、条件、イベント、およびプロシージャをデータとして保管することによって達成することができる。例えば、プロシージャに関して、これらを1ロールのテキストとして作成することができ、このテキストが、データストアに保管される。そのようなプロシージャを実行するために、プログラムテキストを、単純にデータストアから引き出し、実行することができる。
本発明のもう1つの態様によれば、システムが、条件/アクションが情報の異なるドメインにまたがる情報を関連させられるようにするためにアクセッサ定数(accessor constant)をサポートすることができる。アクセッサ定数は、異なるドメインにまたがる情報交換またはデータの共有を容易にする。例えば、アクセッサ定数MyFamilyを定義し、アクセッサ機能が、電子メールアプリケーションまたはカレンダアプリケーションによって保管されたデータを照会することによって、MyFamilyのメンバを判定することができる。図式化されたロジックとアクセッサの組合せは、少なくとも、非プログラマが効率的なクロスドメインクエリを記述できるようにするので、有益である。さらに、比較的少数のメンバのアクセッサ定数と組み合わされた比較的少数の条件クラスは、そうでなければアプリケーション開発者によって提供された多数の興味深い条件を使用できるようにする。
本発明のもう1つの態様によれば、ユーザ定義のプリファレンスを拡張して、アプリケーションの間の関係を可能にすることができる。かなりの範囲まで、IAアプリケーションの基準は、ユーザに提示される機能によって決定される。したがって、IAアプリケーションが拡張可能である度合は、既存アプリケーションのコンテキスト内で新しいプリファレンスを定義する新しい条件およびアクションをユーザから使用可能にする範囲によって決定することができる。アプリケーション拡張性は、オリジナルアプリケーションの作成者によるさらなる介入なしで、アプリケーションがインストールされた時の後に新しい条件およびアクションをアプリケーションに追加することを可能にすることを主に狙う。したがって、エンドユーザは、開発者入力なしで、異なるアプリケーションによって提供される条件およびアクションを利用するプリファレンスを作成でき、これによって、アプリケーションの間の豊富な関係が可能になる。
さらに、本発明のシステムは、情報エージェントアプリケーションをサポートする。本発明の態様によれば、そのようなアプリケーションの1つは、フォルダ、データコンテナ、またはデータストアおよび関連するファイルシステム(例えば、階層システム、任意のまたは明示的な関係を介して関連するファイル)によって提供される他のデータ編成システムに関係することができる。パーソナライズされたフォルダが、エンドユーザ指定のロジックまたはプリファレンスによって定義され、制御される。したがって、エンドユーザは、イベントの発生時にフォルダの内容を制御する条件およびアクションを定義することができる。本発明の一態様では、イベントは、フォルダデータの変更(例えば、文書の追加、削除、または変更)に対応する。プリファレンス(例えば、条件、アクション)は、この要約において、3つのカテゴリすなわち、ユーザの代わりにアクションを行うプリファレンス(例えば、出費レポートに関する電子メールを類似する名前のフォルダに移動する)、フォルダの内容を制御するプリファレンス(例えば、最近2週間に聞いたジャズの全曲を現在のJazzフォルダに保存する)、およびこの2つの組合せ(例えば、ある金額未満の出費レポートのすべてを承認済みフォルダに保管し、このアクションについてエンドユーザに知らせる電子メールをそのエンドユーザに送信する)に要約することができる。
本発明のもう1つの態様に従ってアクティブフォルダを使用することによって、ワークフロー風のアクティビティを使用することができる。この場合に、プリファレンスを使用するエンドユーザは、フォルダ内のアイテムを介して表されるマルチステップタスクまたは作業を指定することができる。その後、フォルダアイテムに対してアクションを行って、タスクまたは作業を完了することができる。
クロニクル(chronicle)フォルダも、本発明の態様に従って使用することができる。クロニクルは、システムの1人または複数のユーザに関するヒストリおよびコンテキスト情報を表す。本発明の態様によれば、クロニクルを、データストアに保管し、エンドユーザが自由にアクセス可能にすることができる。したがって、エンドユーザは、ヒストリカルデータに対する制御を維持し、それに基づいてプリファレンスを記述することができる。例えば、ユーザは、ワークグループの誰もが、ある株価に関するヒストリカル情報を見られるようにすることができ、そのユーザが自分の机にいるか会議中であるかなどのコンテキスト情報を制限することを望むことができる。
前述および関連する目的を達成するために、本発明のある例示的態様を、次の説明および添付図面に関して本明細書で説明する。これらの態様は、本発明を実施できる様々な形を示し、そのすべてが、本発明に含まれることが意図されている。本発明の他の利益および新規の特徴は、図面と共に検討される場合に、本発明の次の詳細な説明から明白になる。
本発明を、添付図面を参照して説明するが、図面全体を通じて、同一の符号が同一の要素を指す。しかし、図面およびそれに対する詳細な説明が、開示される特定の形態に本発明を制限することを意図されていないことを理解されたい。そうではなく、本発明は、本発明の趣旨および範囲に含まれるすべての修正形態、同等物、および代替形態を含む。
本明細書で使用される用語「コンポーネント」および「システム」は、ハードウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれであれ、コンピュータ関連の実体を指すことが意図されている。例えば、コンポーネントは、プロセッサで動作するプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行のスレッド、プログラム、および/またはコンピュータとすることができるが、これに制限はされない。例えば、サーバで動作するアプリケーションとサーバの両方を、コンポーネントとすることができる。1つまたは複数のコンポーネントが、1つのプロセスおよび/または実行のスレッド内に存在することができ、1つのコンポーネントを、1つのコンピュータにローカライズし、および/または複数のコンピュータの間で分散することができる。
本明細書で使用する用語「推論」は、一般に、システム10、環境、および/またはユーザの状態の、イベントおよび/またはデータを介して取り込まれた観察の組からの推理または推論の過程を指す。例えば、推論を使用して、特定のコンテキストまたはアクションを識別することができ、状態に関する確率分布を生成することができる。推論は、蓋然論的すなわち、データおよびイベントの考慮に基づく、関心を持たれた状態に対する確率分布の計算とすることができる。推論は、イベントおよび/またはデータの組から上位イベントを構成するのに使用される技法を指すこともできる。そのような推論は、イベントが時間的に近い近接で相関するか否かにかかわらず、イベントおよびデータが1つまたは複数のイベントソースおよびデータソースのいずれから来るかにかかわらず、観察されたイベントおよび/または保管されたイベントデータの組からの新しいイベントまたはアクションの構成をもたらす。
情報エージェントプラットフォーム
まず図1を見ると、本発明の態様による情報エージェントシステム100が示されている。情報エージェントシステム100に、アプリケーションプログラミングインターフェース(API)110、コンパイラ120、イベントコンポーネント130、コンテキストアナライザ140、図式化データストア150、プリファレンス実行エンジン160、アクションコンポーネント170、および通知コンポーネント180が含まれる。システム100は、様々な情報エージェントアプリケーションの実行を容易にするプラットフォームを提供する。システム100は、自律システムまたはより大きいシステムのコンポーネント部分とすることができる。システム100を、本発明の態様に従って、コンピュータオペレーティングシステムと共に使用することができ、このオペレーティグシステムは、パーソナルコンピュータと、電話機および携帯情報端末(PDA)などのモバイルデバイスとを含むがこれに制限されない複数の異なるコンピューティングデバイスで使用することができる。システム100を、サーバで(例えば、SQLServer、WinFSサーバ)およびサブスクリプションサービスと共に使用することもできる。したがって、システム100を使用して、クライアント、サーバ、およびクライアント−サーバ−クラウドサービス(例えば、Outlook、Exchange、およびHotmail)で様々な製品およびサービス提供情報エージェントの間の協同作用を提供することができる。
API110は、システム100との相互作用を容易にするためにシステム100に含まれる。API110は、開発者が、情報エージェントシステム100の様々なコンポーネントをセットアップするのに使用することができる。さらに、API110を使用して、システム100で動作する情報エージェントアプリケーションから使用可能な1つまたは複数のイベントソースからの複数のイベントおよび/または現在のユーザコンテキストを構成することができる。さらに、API110を使用して、データストア150に保管された論理スキーマで反映し、プリファレンスをデータストア150に書き込むことができる。本発明の範囲に含まれることが意図されるAPI110の多数の他の使用が、本明細書を読む時に当業者に明白になることを諒解されたい。
データストア150は、図式化されたデータの豊富な構造化ストアである。データの図式化すなわち、周知の定義されたパターンへのデータの構造化は、複数のアプリケーション相互作用を可能にするので、本発明にとって特に重要である。下で詳細に説明するように、データストア150を、情報エージェントアプリケーションによって使用して、なかんずく、例えば、イベントおよびプリファレンスのテーブルなど、アプリケーションに関連するデータを保管することができる。さらに、データストア150は、情報エージェントシステム100に含まれるものとして図示されているが、データストア150が、このシステムの外部のコンポーネントと相互作用できることを諒解されたい。
コンパイラ120も、システム100に含まれる。コンパイラ120は、コンパイラ情報エージェントアプリケーションに対して動作する。具体的に言うと、コンパイラ120は、開発者スキーマおよびエンドユーザプリファレンスをコンパイルする。本発明の一態様によれば、例えば、データストア150内の、テーブルへの保管のためのスキーマおよびエンドユーザプリファレンスのデータへの変換を容易にする。
システム100に、イベントコンポーネント130も含まれる。イベントは、プリファレンス評価を開始し、これに情報を提供するトリガである。イベントは、イベントソースから発し、イベントソースは、アプリケーションによる内部状態変化および/または世界の外部変化のいずれかとすることができる。イベントコンポーネント130は、アプリケーションからAPIを介してサブミットされたイベントをキャプチャし、プリファレンス評価を開始することができる。例えば、イベントは、新しいSMTP(Simple Mail Transport Protocol)メッセージを受信したSMTPプロバイダ、データストア150内のデータ変化、オペレーティングシステムアクション、明示的ユーザアクション、および/または他のプリファレンスのアクションによって送出することができる。イベントコンポーネント130は、サードパーティプロバイダから、ならびにインターネット通信、ネットワークベース通信、および電話通信などの通信、ならびにソフトウェアサービス、XMLファイル、アプリケーション、およびデータベースを含むがこれに制限されない複数の異なるタイプのソースから、イベントを収集するかイベントを受け取ることができる。さらに、イベントコンポーネント130は、様々な方法を介してデータを監視し、収集することができる。データ収集の例示的方法に、ファイル追加に関するディレクトリの監視、あるタイプのエントリに関するシステムログファイルおよびアプリケーションログファイルの検査、アプリケーションからの警告のトラップ、ウェブページの監視、データベーステーブルの変化の追跡、およびウェブサービスによって提供されるデータの再検討が含まれるが、これに制限はされない。
データを収集するためにイベントコンポーネント130によって使用できる様々な異なるモデルもある。これらのモデルは、どれほど頻繁に、どの状況の下で、イベントコンポーネント130が様々なイベントソースからイベントを収集するかに影響することができる。
イベントコンポーネント130は、少なくとも2つの形の1つでデータについて通知されるか、データを供給されることができる。イベントコンポーネント130は、情報が「プッシュ」されるか送信されるのを待つことができ、あるいは、ソースをポーリングし、新しいデータまたは更新されたデータを収集することによって、ソースから情報を「プル」することができる。例えば、ユーザが、お気に入りのニュースページの見出しストーリーが変化するたびに通知されることを望む場合に、イベントコンポーネント130を、例えば、そのページを監視し、見出しテキストの変化を検索するように実装することができる。テキストが変化した場合に、イベントコンポーネント130は、新しい見出しデータを抽出し、例えば、データストア150内のイベントテーブルに保管することによって、そのデータをシステム100に供給することができる。上の例では、イベントコンポーネントが、必要なデータを収集する責任を負う。というのは、このデータが、プッシュ方法論の使用の場合のようにイベントソースからイベントコンポーネント130に供給されるのではないからである。
さらにまたはその代わりに、イベントコンポーネント130は、スケジュールまたは事前定義の判断基準を満足するイベントの発生のいずれかに基づいて、システム100のためにイベントデータを入手することができる。スケジューリングされたイベントコンポーネント130は、アプリケーション開発者によって実施される設定に基づいて、周期的に動作することができる。スケジューリングされたイベントコンポーネント130は、実行を開始し、新しいイベントデータを検索し、サブミットし、その後、次のスケジューリングされたトリガの時までハイバーネートすることができる。イベントドリブンのイベントコンポーネント130も、継続的に動作することによってイベントソースを監視することができる。その後、収集に関する特定の判断基準を満足するデータの場合に、イベントコンポーネントは、イベントの発生を収集するか示すことができる。その代わりに、イベントドリブンのイベントコンポーネント130が、コールバック関数または他の外部刺激に応答してのみ動作することができる。この外部関数は、その後、収集すべき有効なイベントデータがあるかどうかを判定し、そのようなデータを収集する手段としてイベントコンポーネント130を使用する。イベントコンポーネント130が、外部イベントソースからデータを収集したならば、イベントコンポーネント130は、そのデータをイベントテーブルに書き込み、そのイベントテーブルをデータベース150に保存することができる。
イベントの収集に使用される方法またはシステムが何であるかにかかわらずに、効率のために、バッチでイベントを書き込み、処理することができることを諒解されたい。本明細書で一般的に定義されるバッチは、グループとして処理されるデータ(例えば、イベント、プリファレンス)のセットとすることができる。グループまたはバッチのサイズは、システムセットアップ中に開発者が判定し、指定することができ、および/または例えば、コントロールパネルを介してユーザが指定することができる。
本発明の一態様に従ってコンテキストアナライザ140によって収集される情報は、このアナライザによって判定されるコンテキスト情報を含む。コンテキスト情報は、アナライザ140によって、本明細書の後のセクションで詳細に説明するように、1つまたは複数のコンテキスト情報ソース(図示せず)に基づいて、ユーザの位置および注意状況を識別することによって判定される。例えば、コンテキストアナライザは、ユーザの自動車またはセル電話機の一部である全世界測位システム(GPS)を介して、ユーザの実際の位置を正確に判定できる場合がある。アナライザは、静的モデルを使用して、バックグラウンド査定および/または日のタイプ、時刻、ユーザのカレンダ内のデータ、およびユーザのアクティビティに関する観察などの情報の検討を介して収集される観察を考慮することによって、ユーザが注意の所与の状態である可能性を判定することもできる。その後、注意の所与の状態を、ユーザ定義プリファレンスに関するイベントまたは条件として使用することができる。
プリファレンス実行エンジン160を、アクション処理にも用いることができる。プリファレンスロジックは、実際には結果の組を作るだけであるが、これを、その代わりに、本明細書で、これがそのような結果の共通の影響なので、アクションと呼ぶ。アクションを実行するのにプリファレンス実行エンジン160を使用することは、アクションを実行できる形の1つにすぎない。アクションは、システム100からプリファレンス結果を単純に取り出し、それらに作用するアプリケーションによって実行することもできる。システム100の一部としての実行エンジンによるアクションの実行は、アクティブエージェントの特色を有するが、アプリケーションによるアクションの実行は、受動的判断ロジックの特色を有する。したがって、システム100は、システム100がイベントコンポーネント130に関するイベント取り出しおよび処理に関するホスティングサービスを提供する形に似た形でアクションを取り出し、実行できるアプリケーションアクションハンドラ用のホスティングサービスを提供することができる。さらに、本発明の一態様によれば、データに近いアクション(例えば、特定のフォルダへの電子メールの移動)は、プリファレンス評価と同期してならびに同一トランザクションの一部として実行エンジン160によってシステム100内で実行することができることを諒解されたい。
システム100のプリファレンス実行エンジン160は、なかんずく、プリファレンスを処理し、評価する。プリファレンスは、イベントの発生によってトリガされる、エンドユーザ定義のルールである。システム100によってサポートできる2つのアクティベーションモデルすなわち、同期および非同期がある。同期アクティベーションモードでは、イベントサブミッションとプリファレンス評価の間にとるに足らない遅延がある。すなわち、プリファレンス評価は、イベントサブミッションに対する応答が返される前に完了することができる。対照的に、非同期アクティベーションモードでは、イベントサブミッションの完了とプリファレンス評価の完了の間に大きい遅延がある。例えば、非同期アクティベーションを実装する1つの方法によれば、サブミットされたイベントは、操作できるようになるまでキューに入れられる。システム100は、一方または両方のモデルのアクティベーションをサポートすることができる。さらに、本発明の態様によれば、同期挙動または非同期挙動を、バッチサイズおよび処理に使用可能な時間を含むがこれに制限されない複数の考慮事項に従って、バッチサブミッション中に動的に選択することができる。プリファレンス処理のもう1つの態様に、分離およびトランザクション境界が含まれる。例えば、単一のバッチイベントに関連するプリファレンスの処理は、トランザクション的とすることができる。その代わりに、多数のイベントバッチを、1つのトランザクション単位として一緒に処理することができる。システム100は、上のモデルシナリオの一方または両方をサポートすることができる。さらに、プリファレンス実行エンジン160は、イベントサブミッションおよびプリファレンス処理のトランザクションスコープを処理する。システム100は、次の2つのモデルの一方または両方をサポートすることができる。第1に、イベントサブミッションおよびプリファレンス処理が、同一のトランザクションを共有でき、これによって、一緒に実行されることが可能である。そうでない場合に、イベントサブミッションおよびプリファレンス処理を、異なるトランザクションで行うことができる。
本発明の態様によれば、実行エンジン160およびシステム100は、軽いおよび/または重い情報エージェントまたはプリファレンスアプリケーションの両方をサポートすることができる。軽いアプリケーションは、短い待ち時間、小さいデータベースフットプリント、および小さいワーキングセットを必要とするアプリケーションである。高いスループットおよびスケーラビリティは、軽いアプリケーションのファーストオーダー要件ではない。重いアプリケーションは、高スループット、スケーラビリティ、高い信頼性、厳しい正しさの保証、予測可能なクラッシュリカバリ、および簡単なマネージャビリティを必要とするアプリケーションである。短い待ち時間およびリソース消費は、重いアプリケーションについては最高優先順位でない。高性能サーバが、通常、重いアプリケーションを実行するが、軽いアプリケーションは、通常、パーソナルコンピュータおよびモバイルデバイスを含むがこれに制限されないより低い性能のシステムで使用される。したがって、実行エンジン160は、重いアプリケーションと軽いアプリケーションを区別できなければならず、特定のアプリケーションタイプに最も反応する形で実行するように変更を行えなければならない(例えば、高スループット対短待ち時間)。一般に、実行エンジンは、データベースフットプリント、コンポーネントアクティベーションの待ち時間、処理、メモリフットプリント、および永続プロセスに最も関係する。重いアプリケーションの実行は、(1)なかんずく、複数のデータベース、テーブル、ビュー、ストアドプロシージャ、およびユーザ定義関数をサポートするための大きいデータベースフットプリントの割り当て、(2)イベント収集、通知生成、および通知配布のための短いポーリング間隔、および(3)情報のバッチ処理を必要とする場合がある。軽いアプリケーションの実行は、これらが、(1)最小限のメモリおよびデータベースフットプリントを用いて使用でき、(2)イベント収集、通知生成、および通知配布(イネーブルされる場合に)により長いポーリング間隔を使用でき、(3)小さいバッチでまたは個別にイベントなどの情報を処理できるという点で、異なる。さらに、本発明の態様によれば、ホスティングされるイベントプロバイダおよびある通知配布が、システム応答時間と干渉する継続的に動作するプロセスを必要とするので、軽いアプリケーションでサポートされない場合がある。しかし、実行エンジン160が、使用可能なリソースおよびテクノロジの状態に応じてアプリケーション「軽さ」の増分的変動をサポートできるという点で柔軟であることを諒解されたい。
システム100に、アクションコンポーネント170も含まれることに留意されたい。プリファレンスの成功裡の評価の際に、プリファレンス実行エンジン160は、アクションコンポーネント170を呼び出して、1つまたは複数の有効なプリファレンスに従うアクションを実行することができる。アクションは、データストア150に影響し(例えば、データを挿入し、削除し、または変更する)および/またはシステム100内またはその外の他のコンポーネントおよびシステムに影響することができる。1つの特定のタイプのアクションが、ユーザ通知である。したがって、アクションコンポーネントは、通知コンポーネント180と共に図示されている。
図2を参照すると、通知コンポーネント180が詳細に示されている。通知コンポーネント180に、フォーマッタ272および配布プロトコル274が含まれる。通知コンポーネント180は、入力として生の通知データを受け取り、最終的ユーザデバイス(例えば、コンピュータ、PDA、携帯電話機)に到着するフォーマットされた通知を出力する。生の通知データが通知コンポーネント180によって受け取られた後に、通知が、宛先デバイス用および多分ユーザの好みの言語用にフォーマットされた可読通知に変換され、配布プロトコル274を介してデバイスに送られる。コンテンツフォーマッティングは、1つまたは複数のコンテンツフォーマッタコンポーネント272によって処理されるタスクである。コンテンツフォーマッタ272は、配列にパッケージ化された通知データを入力としてとる。標準的な配布に関して、この配列に1つの要素だけが存在しなければならず、この要素に、単一の通知レコードに関する情報が含まれる。複数の通知を単一のメッセージでサブスクライバに送信することを試みるダイジェスト配布に関して、配列に複数の要素が存在することができ、この要素のそれぞれに、1つの通知からのデータが含まれる。コンテンツフォーマッタ272は、例えば、通知データに含まれる受信者情報を使用して、適当なフォーマッティングを決定することによって、表示のためにデータをフォーマットする。さらに、ダイジェスト配布が使用される場合に、コンテンツフォーマッタ272は、通知情報を適当に集約する責任も負う。内部的には、コンテンツフォーマッタ272は、適当なスキームを使用して通知をフォーマットすることができる。例えば、そのようなスキームは、基本的なストリング操作を使用することなどの単純なものとすることができ、あるいは、XSL(Extensible Stylesheet Language)変換またはASP.NETレンダリングの使用などの複雑なものとすることができる。コンテンツフォーマッタがその作業を完了した場合に、コンテンツフォーマッタは、フォーマットされたデータを含むストリングを出力する。ストリングは、生成できるある通知ヘッダ情報と共に、配布プロトコルコンポーネント274に渡される。
通知配布は、配布プロトコル274を介して達成することができる。通知のバッチが使用可能になる場合に、通知コンポーネント180は、通知のサブスクライバデータを読み取って、正しいフォーマッティングを決定する。通知コンポーネント180は、次に、例えば、.NET AlertsサーバまたはSMTPサーバなどの配布サービスに、配布プロトコル274によって通知を送ることができる。具体的に言うと、アプリケーションが走っている場合に、通知コンポーネント180は、各通知を読み取って、サブスクライバ配布デバイスおよびロケールを入手することができる。次に、ディストリビュータは、デバイスおよびロケールの組合せを特定のフォーマッタオブジェクトに一致させて、最終的な通知を生成する。通知自体に、生の通知データ、フォーマッティング時に計算されたデータ、ならびにコンテンツフォーマッタ272によって指定されるテキストの組合せを含めることができる。これらのオプションは、プロフェッショナルでユーザフレンドリな通知テキストと、ウェブリンクおよびブランディング情報を含めることを可能にする。
システム100は、内部通知(例えば、ポップアップ通知)を処理することができるが、システム100は、外部サードパーティデバイスへの通知の最終的な配布を扱う必要がない。その代わりに、システムは、配布チャネル(図示せず)を使用することができ、この配布チャネルは、電子メールゲートウェイまたは.NET Alertsサーバなどの配布サービスへのパイプと考えることができる。具体的に言うと、配布チャネルは、プロトコルおよびエンドポイントアドレスからなるものとすることができる。システム100は、配布プロトコル274を構成して、通知コンポーネント180から、通知を受信者に送信する外部配布システムへのパイプラインを提供することができる。次に、通知コンポーネントは、配布プロトコルコンポーネント274を使用して通知をプロトコルパケットにパッケージ化し、その通知を1つまたは複数の配布チャネルに送信する。配布チャネルは、その後、そのパケットを外部配布サービスに提示し、この外部配布サービスは、最終的に、通知を所期の受信者に送信することができる。
情報エージェントアプリケーション
図3を参照すると、本発明の態様による情報エージェントアプリケーション300が示されている。アプリケーション300は、システム100の開発の単位であり、論理スキーマ310、ユーザインターフェース320、判断ロジックコンポーネント330、イベントプログラミングコンポーネント340、およびタスクスケジュールコンポーネント350を含む。論理スキーマ310は、エンドユーザが一緒にすることができる図式化された論理の構成ブロックまたはテンプレートを定義する。スキーマ開発者は、論理スキーマ310ならびにデフォルト挙動および例外が発生した場合の挙動を構成する責任を負う。実際には、論理スキーマ310は、エンドユーザロジックの実際の表現力を制限し、これによって、訓練されないエンドユーザが実際にアプリケーションを「プログラム」することを実用的で実行可能にする。論理構成ブロックに、プリファレンスクラス、条件クラス定義のセット、および潜在的な結果またはアクションのセットを含めることができる。条件およびアクションは、関連するアプリケーション300および/またはユーザコンテキストの機能性に関係することができる。さらに、本発明の態様によれば、論理スキーマ310を、XML(extensible Markup Language)を使用して定義できることを諒解されたい。
本発明の態様によれば、論理スキーマ310をそのために定義できる2種類の構成ブロックすなわち、テンプレート化されたBoolean関数を定義する条件クラスおよびテンプレート化されたプロシージャを定義するアクションクラスがある。プリファレンスクラスは、情報エージェントスキーマ開発の単位である。プリファレンスに、許容される条件クラス(例えば、IsFrom(X)、IsTo(Y))およびアクションクラス(例えば、MoveToFolder(Z)、Delete())のセットが含まれる。さらに、すべてのプリファレンスが、アクションを開始するために特定のイベントクラスまたはトリガ(例えば、EmailEvent)に関連する。論理スキーマ310が指定された後に、スキーマ310を、コンパイラ120によってコンパイルすることができ、スキーマ310は、データストア150内の正規化されたシステムメタテーブルで永続することができる。さらに、コンパイル期間中に、プリファレンスを評価できるストアドプロシージャを作成することができる。スキーマ論理310およびプロシージャの両方を、後のアクセスおよび実行のために図式化データストア150に保管することができる。その後、ユーザが、指定しようとする場合に、プリファレンスを論理スキーマ310と比較して、その形式的準拠を検証し、その後、データストア150内、例えば、プリファレンスの1つまたは複数のテーブルに保管することができる。適当なイベントが発生する場合に、システム100は、コンパイル時中に作成されたストアドプロシージャを実行することによって、適当なプリファレンスが評価されることを保証することができる。本発明の態様によれば、ストアドプロシージャは、セット指向の形で、インデクシングおよび重複除去(下で説明する)などの技法を使用して、複数のプリファレンスを一緒に効率的に評価することができる。
ユーザインターフェース320は、プリファレンスオーサリングインターフェースまたはプリファレンスプログラミングインターフェースをエンドユーザに提示する。エンドユーザは、訓練された開発者ではなく、したがって、標準的な手続きプログラミングまたはスクリプティングは、ユーザがロジックを指定するための実行可能なオプションではない。したがって、論理は、例えば、ユーザインターフェース320を介する、クリックアンドドラッグまたはコピーアンドペーストの形で視覚的に表現し、エンドユーザに提示することができる。ユーザインターフェース320を、アプリケーション300内のツールバーまたは完全に独立のグラフィカルユーザインターフェース(GUI)とすることができることに留意されたい。さらに、アプリケーション300が、ユーザインターフェース320を含むものとして図示されているが、アプリケーション300が、プリファレンスを定義するそれ自体のユーザインターフェースを有する必要がないことを諒解されたい。アプリケーションは、論理作成のためにオペレーティングシステムまたはアプリケーション固有のユーザインターフェースを使用するように設計することができる。
アプリケーション300に、プリファレンスまたは様々な機能性のプログラムを作るのにエンドユーザが使用できる3つのコンポーネントすなわち、判断ロジックコンポーネント330、イベントプログラミングコンポーネント340、およびタスクスケジュールコンポーネント350も含まれる。判断ロジックコンポーネント330は、エンドユーザが、判断ロジック(別名エンドユーザロジック)を定義できるようにする。アプリケーションは、定義されたエンドユーザロジックによって様々な決定を制御させることができる。例えば、エンドユーザは、どの場合に、いつ、どのように警告を画面にポップアップし、ユーザに割り込むかを指定することができる。アプリケーションは、エンドユーザが判断ロジックをアタッチできるイベントを公開することもできる。例えば、電子メールアプリケーションは、新しいメールがフォルダに到着する時に必ずイベントを送出することができる。イベントプログラミングコンポーネント340は、エンドユーザが、例えば、メッセージの内容およびユーザのコンテキストに依存して発生し得る挙動を指定するプリファレンスまたはルールをアタッチできるようにする。ルールの条件は、他のアプリケーションからのデータ(例えば、送信者が同一のワークグループ内にいるかどうかを検査するためにアクティブディレクトリ)にアクセスすることができ、アクションは、本発明の一態様に従って、他のアプリケーションをもたらすか別のイベントを送出することができる。タスクスケジュールコンポーネント350は、エンドユーザが、アドホックなタスクまたは事前定義のタスクをイベントオカレンスにアタッチできるようにする。例えば、新しい顧客苦情が生じる場合に、エンドユーザは、その苦情を処理するために事前定義のワークフローを開始することを選択することができる。
判断ロジックコンポーネント330は、エンドユーザが、開発者によって提供される条件テンプレートおよび結論テンプレートを組み合わせることによって、判断ロジックプログラムまたはエンドユーザロジックプログラムを記述できるようにする。判断ロジックは、「IF(条件)THEN(結果)」プリファレンスまたはルールを使用することによって指定することができる。このタイプのロジックは、エンドユーザ指定に特に適当である。というのは、絶対的にプログラミング経験がまったくないエンドユーザであっても、そのようなルールをすぐに理解でき、作成できるからである。例えば、次の例を検討されたい:IF(TheDogBarks(犬がほえる))OR(TheBeeStings(ハチが刺す))THEN(IFeelSad(私は悲しい))。このルールは、非開発者が、および子供であっても、正しいユーザインターフェースを与えられれば理解でき、表現できるものである。このタイプのIF−THEN論理プログラミングは、少なくとも推理および言葉によるコミュニケーションという人間の概念と一致するので、エンドユーザ指定に適当である。単一のルールのセマンティクスは、宣言的であり、明確に理解される、すなわち、結果は、条件が真の場合に限って真である。さらに、エンドユーザが、アクティブコンテキストでプリファレンスロジックを適用することは、直観的である。結果は、自明の理の単純な陳述ではなく、行われるアクションになる。例えば、IF(TheDogBarks(犬がほえる)OR TheBeeStings(ハチが刺す))THEN(ThinkAboutRaindropsOnRoses(レインドロップスオンローズという曲について考える))である。単一のIF−THENルール内であっても、許容される表現力の豊かさの様々な度合がありえる。前の例は、おおむね、命題論理に対応する。命題論理は、単純な真/偽命題を組み合わせて、論理ステートメントを作ることができるという概念に基づく。しかし、述部論理、制約論理、および再帰を含むがこれに制限されない、平均的なエンドユーザが指定するには複雑すぎる可能性がある論理のより豊かな形を、本発明と共に使用することもできる。
プリファレンスは、ユーザインターフェース(例えば、コントロールパネル、ツールバー)を介して指定することができる。スキーマ開発者は、条件ロジックの構成ブロックとして基本的な述部のセットを提供することができる。エンドユーザは、その後、適当な条件を選び、適当な場合にパラメータ値を割り当て、Boolean演算子(例えば、AND、OR、NOT)を用いてそれらを組み合わせることができる。同様に、エンドユーザは、適当な結果を選び、適当な場合にパラメータ値を割り当てることができる。エンドユーザ指定のプログラムの豊かさは、開発者によって提供される図式化されたロジックに由来する。これらの条件テンプレートおよび結果テンプレートは、エンドユーザアプリケーションの構造化データを含む、様々な情報を査定することによって、その内部ロジックにおいて豊富なものとすることができる。すべての条件テンプレートまたは結果テンプレートが、パラメータリストを記述したスキーマを有することができる。エンドユーザは、適当なパラメータ値を単純に提供することによって、これらの構成ブロックを使用することができる。
ここまでで説明したものは、情報エージェントシステム100の受動的使用であり、より能動的なスタイルを、下で説明する。システム100の受動的使用によれば、アプリケーションは、適当なステージで判断ロジックを呼び出し、必要なパラメータを供給する責任を負う。アプリケーションは、結果に作用するために別のアプリケーションを呼び出す責任を負うこともできる。さらに、プログラムインフラストラクチャであるシステム100が、プリファレンスを評価し、複数のプリファレンスの間の衝突を処理し、結果の正しいセットを判定するインタープリタ(図示せず)をも必要とする場合があることに留意されたい。
イベントプログラミングコンポーネント340は、情報エージェントアプリケーション300に、少なくとも3つの機能を提供する。第1に、イベントプログラミングコンポーネント340は、エンドユーザプログラムのフックとして働くことができる、図式化された情報イベントのセット(例えば、スキーマ開発者によって定義される)を提供することができる。各イベントは、それと共に、構造化されたデータを伝えることができる。イベントインスタンスキャプチャの複数の機構がある(例えば、イベントサブミッション用のAPI)。情報イベントのいくつかのサブクラスもある。イベントの1つのサブクラスが、図式化データストア150内で変化するデータに対応する。したがって、イベントプログラミングコンポーネント340は、ストア内のデータ変化にアクセスし、図式化された変化イベントとしてこれを使用可能にする機構を提供することができる。イベントのもう1つのサブクラスは、再帰するタイマイベントに対応することができ、このイベントは、スケジューリングされたプリファレンスアクティビティに重要になる可能性がある。イベントプログラミングコンポーネント340は、エンドユーザ「ハンドラ」ロジックを、指定されたイベントの発生に関連付ける能力も提供することができる。さらに、イベントプログラミングコンポーネント340は、イベントを取り込み、適当な判断ロジックを適用し、判断結果を実行するためにアクションハンドラを呼び出すサービスを提供することができる。
イベントプログラミングコンポーネント340は、判断ロジックコンポーネント330と相互作用して、追加の機能性を提供することができる。例えば、エンドユーザは、判断ロジックコンポーネント330を使用することによって、新しいイベントが到着する時に繰り返して適用される持続的な判断ロジックをセットアップすることができる。したがって、システムおよび/またはその上で走るアプリケーションは、すべてのトリガするイベントが適当な判断ロジックの評価を引き起こすという点で、アクティブになることができる。具体的に言うと、トリガするイベントは、判断ロジックへの入力を形成することができ、プリファレンスロジック評価の結果は、イベントプログラミングコンポーネント340がエンドユーザの代わりに実行できるアクションを形成することができる。さらに、アクションは、その後にイベントプログラミングコンポーネント340によってさらなるロジックを実行させる新しいイベントを送出することができる。その結果、アドホックなチェーニングされたイベントプログラミングという概念がある。
タスクスケジュールコンポーネント350は、エンドユーザタスクスケジュールまたはワークフローを管理する。本明細書で使用されるスケジュールは、その間に特定のシーケンシングまたはステージングを有する、タスクの編成されたセットである。タスクの全体を実行することの目的は、通常は、ある実世界の目的、例えば、4人の人との会議のスケジューリングを達成することである。会議の例では、スケジュールに含まれるタスクに、なかんずく、最初の会議要求を送り出すことと、肯定および否定の応答を処理することを含めることができる。ワークフローは、ビジネスプロセスオートメーションで一般的であるが、本発明に関して説明されるタスクスケジュールまたはワークフローは、エンドユーザアクティビティに関連する(例えば、会議のスケジューリング、文書の再検討、要求の委任)。これらのワークフローの多くが、単純なプロセスであるが、これらは、カスタマイズ可能であり、エンドユーザに透過的である。
タスクスケジュールコンポーネント350は、判断ロジックコンポーネント330およびイベントプログラミングコンポーネント340の両方と相互作用し、これらによって提供される機能性を活用することができる。イベントプログラミングコンポーネント340は、タスクスケジュールを呼び出すための理想的なフックを提供する。例えば、作業要求を含む新しいメールの到着が、タスクスケジュールを開始することができる。一部のタスクスケジュールは、明確なプロセスフローに関して硬直している。多数の他のタスクスケジュールは、柔軟であり、エンドユーザが異なるパスの間で選択することを可能にする。例えば、会議要求が、複数の招待された人によって拒絶される場合に、その会議を、再スケジューリングするか、その代わりに会議を進行することができる。これは、エンドユーザプリファレンスおよび判断ロジックコンポーネント330を使用するのによい領域である。さらに、本発明の代替の態様によれば、スケジューリングに変更への反応および適当なアクションの呼び出しが含まれるので、タスクスケジュールコンポーネント350をイベントプログラミングコンポーネント340に組み込めることに留意されたい。要するに、タスクスケジュールの一部は、開発者によってハードコードされる可能性があるが、フローを、時々エンドユーザプログラミングを介して自動化される明示的ユーザ判断によって構成される、動的なものにすることによって、かなりの価値が追加される。
本明細書で説明する情報エージェントの概念に、少なくとも2つの中央要素がある。第1に、アプリケーション挙動を制御する判断ロジックを提供するエンドユーザの能力が、重要である。これは、単純に、アプリケーションのエンドユーザプログマビリティであり、実際には、エンドユーザの代わりに働くエージェントを伴わない。これを、本明細書では、エンドユーザロジックの受動的呼び出しと称する。第2に、情報エージェント概念の重要な要素が、エンドユーザがアクティブである判断ロジックを提供する能力である。アクティブである判断ロジックは、適当な情報イベントが発生する場合に繰り返して適用することができ、これによって、エンドユーザの代わりにソフトウェアエージェントとして働く。両方の場合で、判断ロジックは、通常はコンテキスト的であり、ユーザのコンテキストおよびアプリケーションの状態に依存する。この2つのコンテキストカテゴリ内の様々な種類のシナリオを、下で説明する。さらに、情報エージェントが引き受けることのできる異なる「ペルソナ(persona)」の形のエンドツーエンドシナリオも説明する。
エンドユーザロジックの受動的呼び出しの1つの例が、情報エージェントを使用してユーザの割込みを制御するオペレーティングシステムである。あるアプリケーションが、スクリーンにサウンドと共にポップアップを上げることを望む時に、必ず、オペレーティングシステムは、APIを使用して、情報エージェント判断ロジックコンポーネントを呼び出して、発生すべきものを決定する。ディスプレイ、遅延、削除、および転送を含む、判断ロジックコンポーネントによって明らかにされる可能性がある複数の可能な結論がある。判断ロジックコンポーネント330が何をすべきかを伝えたならば、オペレーティングシステムは、実際の判断を実施することができる。
判断ロジックコンポーネント330は、普通のプログラムのオプションをカスタマイズするのに使用することもできる。例えば、普通の電子メールプログラムは、受け取ったものの読み取り、署名の適用、およびメール優先順位に関するオプションを提供する。受け取ったものの読み取りによれば、しばしば、受け取ったものの読み取りをイネーブルするか否かを示すチェックボックスがある。判断ロジックコンポーネント330は、このオプションをカスタマイズして、重要なメッセージまたは使用者に送られたメッセージだけの受け取ったものの読み取りをイネーブルすることができる。さらに、ユーザは、通常、進行中のメッセージに署名を適用することができるが、判断ロジックコンポーネント330を使用することによって、この動作を、所期の受信者に応じてメッセージに署名を付加することによって、より価値のあるパーソナライズされたものにすることができる。最後に、電子メール優先順位レベルは、通常は、送信者によって決定され、設定される。判断ロジックコンポーネント330を使用することによって、メール優先順位を、例えば、受信者の現在のコンテキストに応じて、受信者によって決定することもできる。さらに、エンドユーザロジックを使用して、上記などの状況で行うべきこと(例えば、署名を付加する)を決定するだけではなく、アクションの内容をどうすべきか(例えば、どの署名を実際に付加するか)を決定することもできる。
判断ロジックコンポーネント330を介するエンドユーザロジックの能動的呼び出しは、複数の情況で使用することができる。例えば、能動的ロジックを使用して、カメラからダウンロードされる時に写真を分類する、または受信時に編成ルールに従って電子メールを分類するなど、データを編成することができる。能動的ロジックを使用して、新しいメールが到着し、受信者が自分の机にいない場合に携帯電話機に転送するなど、変化に反応することもできる。能動的ロジックを使用して、例えば、ユーザが電話に出られない場合にユーザの電話に応答し、ユーザが次に電話に出られる時を応えるなど、通信を機能強化することもできる。さらに、能動的ロジックを使用して、例えば、旅の目的地で悪天候が期待される場合にユーザが通知を受けられるようにするなど、公表される情報にサブスクライブすることができる。さらに、能動的ロジックを使用して、コンテキストを維持することができる。例えば、ユーザが、異なる位置で会議に加わり、去る時に、適当にコンテキストを更新することができる(例えば、リモートまたはローカル、ビジーまたはフリー)。
情報エージェントは、実際の人間のエージェントがユーザのために行うものと同じ様々な役割を演じることができる。したがって、情報エージェントは、通信を機能強化する秘書、情報を編成する司書、プリンシパル/ユーザが好機を知ることを保証するサービスエージェント、プリンシパル/ユーザが困らないことを保証する付き添い、およびプリンシパル/ユーザが外見がよく、精神状態がよいようにする従者を含むがこれに制限されない様々なペルソナを有することができる。秘書として、情報エージェントは、プリンシパル/ユーザが電話に出られない場合の留守番電話、電話に出られないユーザのボイスメールへの発呼者の転送、電話が切れたことを示すユーザへのインスタントメッセージングなど、様々な機能を実行することができる。司書として機能する場合に、情報エージェントは、デジタル写真および電子メールを編成することができる。サービスエージェントとして、情報エージェントは、例えば、株式または不動産を売買する機会についてプリンシパルに知らせ続けることができる。付き添いとして働く情報エージェントは、銀行口座の残高が最小残高を下回る場合にプリンシパルに知らせ、クレジットカード限度に近い場合にプリンシパルに知らせ、請求が期限に支払われることを保証するために通知を提供し、および/またはコンピュータのバッテリまたは満杯のディスクについてプリンシパルに警告することができる。従者として、情報エージェントは、重要な顧客からの着呼に関連するすべての文書および電子メールを引き上げ、および/または当惑させる通知がプレゼンテーションの途中でポップアップしないことを保証することができる。
論理スキーマ
図4を見ると、本発明の態様による例示的な論理スキーマ400が示されている。論理スキーマ400に、条件クラス410、アクションクラス415、イベントクラス420、プリファレンスクラス425、バインディング430、クロニクル435、衝突解決445、明示的実行順序付け450、必要条件およびアクション455、テンプレート460、ならびにスケジューリングされたプリファレンスおよび再帰プリファレンス465が含まれる。例示的な論理スキーマ400および前述のスキーマコンポーネントは、説明を単純にするために提供される。したがって、論理スキーマ400に、前述のコンポーネントのすべて、そのサブセット、および/または図示されていない追加スキーマコンポーネントを含めることができることを諒解されたい。前に述べたように、スキーマ開発者は、エンドユーザが一緒にすることができる図式化された論理構成ブロックを定義する。2種類の構成ブロックが、条件クラス410およびアクションクラス415である。条件クラス410は、テンプレート化されたBoolean関数を定義することができ、アクションクラス415は、テンプレート化されたプロシージャを定義することができる。プリファレンスクラス425は、情報エージェントスキーマ開発の単位である。プリファレンスクラス425に、なかんずく、許容される条件クラスおよびアクションクラスのセット、バインディング430、衝突解決445、および必要条件455を含めることができる。さらに、すべてのプリファレンスクラス425を、特定のイベントクラス420に関連付けることができ、このイベントクラス420は、プリファレンスに関するトリガするイベントを定義する。次は、情報エージェント電子メールアプリケーションのプリファレンスクラスの例である。
Figure 0004896726
プリファレンスは、エンドユーザロジックの単位である。プリファレンスは、「ON(イベント)IF(条件)THEN(アクションセット)」の形の論理ステートメントとすることができる。したがって、すべてのプリファレンスが、次のプロパティを有しなければならないが、それを要求されない。第1に、プリファレンスは、プリファレンスクラスに属さなければならない。第2に、プリファレンスは、あるユーザまたはプリンシパルによって所有されなければならない。第3に、条件は、条件クラスの1つまたは複数のインスタンスを組み合わせる宣言的Boolean式でなければならず、ここで、すべての条件インスタンスが、条件クラスのパラメータ値を定義する。最後に、アクションセットは、アクションクラスのセットでなければならない。すべてのアクションインスタンスが、アクションクラスのパラメータ値を定義する。例えば、:
Figure 0004896726
エンドユーザは、イベントハンドラを定義することによって「プログラムする」ことができる。各イベントハンドラは、同一のプリファレンスクラスのプリファレンスのセットによって定義され、したがって、同一のイベントによってトリガされる。例えば、:
Figure 0004896726
その後、特定のイベントが発生する(例えば、電子メールが到着する)場合に、複数のプリファレンスが有効な条件を有する可能性があり、複数のアクションの実行の可能性につながる。様々な衝突解決機構を、下で説明するように適用することができる。
さらに、すべての条件が、単純に、その呼び出しパラメータを伴うBoolean関数であることを諒解されたい。本発明の一態様によれば、アプリケーション境界をまたぐために、図ロジックが必要である。したがって、条件は、複数の異なるアプリケーションによって作られたデータを見ることができる必要がある。例えば:
Figure 0004896726
上の例のすべてが、ユーザコンテキストを扱う。ユーザコンテキストは、コンテキストアナライザ140(図1)によって判定でき、情報エージェントアプリケーションによる使用のためにデータストア150(図1)に保管することができる。したがって、「Bool IsOnline(X)」などの関数は、渡された人Xの識別およびコンテキストアナライザによって判定されるその人のプレゼンスコンテキストに基づいて、真または偽を返すことができる。
上の例を続けると、InBoxPreferenceClassなどのプリファレンスクラスのスキーマ開発者は、エンドユーザによる使用のために条件クラス410を提供する必要がある。これを行う複数の形がある。例えば、条件クラスを、IsOnline()とすることができる。この場合に、エンドユーザは、「IF(IsOnline(Email.Sender))THEN...」の形でプレゼンスを定義することができる。その代わりに、条件クラスをSenderIsOnline()とすることができ、その宣言で、スキーマ開発者が、これをIsOnline(X)にバインドし、XをEmail.Senderにバインドすることができる。したがって、エンドユーザは、「IF(SenderIsOnline())THEN...」としてプリファレンスまたはルールを定義することができる。本発明は、条件クラス410を指定する複数の形をサポートするが、上で説明した形に大きい相違があることに留意されたい。第1の形は、伝統的なプレディケーテッドカルキュラスルール形式(predicated calculus rule form)であり、ここで、ルールをオーサリングする人(例えばエンドユーザ)が、スキーマおよび変数バインディングについて推理する。第2の形は、より柔軟性が少ないが、エンドユーザが使用するために明らかにより単純である。したがって、条件クラス410は、スキーマ開発者がエンドユーザロジックの表現力を制限できる領域であり、これによって、未経験のエンドユーザが情報エージェントアプリケーションを「プログラムする」ことが、より実用的で実現可能になる。
短く言うと、スキーマ開発者が、プリファレンスクラス425をオーサリングする場合に、条件クラス宣言410のセットが作られる。各条件クラス宣言は、実装関数および、開発者定義の式によってバインドされるその関数へのパラメータを定義する。残りのパラメータは、プリファレンスをセットアップする場合にエンドユーザによってすべての条件インスタンスについて提供される定数である。アクションは、アクションクラス415のインスタンスである。各アクションクラス415は、パラメータを有するプロシージャである。条件と同様に、パラメータは、開発者によってバインドすることができ、あるいは、エンドユーザによって定数として割り当てることができる。さらに、イベントクラス420は、イベントの定義を提供する。イベントクラスは、開発者によって指定されるかエンドユーザによって割り当てられるイベントの情報内容を定義し、このイベントは、プリファレンス評価によってトリガされる。
本明細書全体を通じて注記されるように、本発明の態様によれば、エンドユーザは、経験のあるプログラマであることを期待されない。したがって、プリファレンスは、直観的な名前(例えば、EmailIsFrom())を有する条件に基づいて作成され、条件への引数は、単純なユーザ定義定数(例えば、Mary)とすることができる。これによって、エンドユーザが、EmailIsFrom(Mary)によってトリガされるプリファレンスを記述できるようになる。しかし、ユーザが提供するストリング定数だけに基づく引数を有することは、制限的にすぎる。したがって、バインディング430を、プリファレンスクラス425の一部として論理スキーマ400で指定して、プログラミングをエンドユーザにとって簡単にすると同時に、情報を取り出すことができるドメインを拡張することができる。スキーマ400で指定できる、少なくとも3つのタイプのパラメータバインディングがある。第1に、定数を事前に定義する定数バインディングを指定することができる。定数バインディングの指定は、少なくとも、エンドユーザが定数を選択するか指定する必要がなくなるので、有益である。イベントにバインディングされた式を、条件およびアクションへの引数として提供される値にバインドすることもできる。具体的に言うと、イベントフィールドおよび定数を使用して値を計算する式を、定義することができる。例えば:
Figure 0004896726
最後に、定数アクセッサを定義することができる。定数アクセッサは、ユーザが各オブジェクトを手動で指定しなければならないことの代わりに、条件およびアクションへの引数を提供するオブジェクトの名前付きグループである。
定数アクセッサは、様々なドメインをナビゲートし、そこから情報を取り出すことができるプリファレンスおよび条件を記述できるようにする非常に強力な定数である。これらの定数は、単純に、正しい情報すなわち定数の名前に関連するグループのメンバを見つけ、実体化するように動作する関数の上辺を飾る名前である。短く図5を見ると、本発明の態様による、定数値を取り出すシステム500が示されている。システム500に、アクセッサ入力コンポーネント510、リンクコンポーネント520、ならびに複数のドメイン530、540、および550(DOMAINからDOMAIN、ただし、Nは1より大きい)が含まれる。アクセッサ入力コンポーネント510は、入力としてMyFamily、MyCoworkers、またはMyFriendsなどの定数を受け取り、その定数をアクセッサコンポーネント520に供給する。アクセッサコンポーネント520は、すべての可能なドメイン530、540、および550を検索して、試み、入力によって指定されるグループのメンバに関連する値を解決またはリンクするように動作する。本発明の一態様によれば、ドメイン530、540、および550は、図式化データストアに保管されたアプリケーションとすることができる。例えば、ドメイン530を、電子メールアプリケーションとすることができ、ドメイン540を、カレンダアプリケーションとすることができ、ドメイン550を、顧客アカウントアプリケーションとすることができる。したがって、アクセッサコンポーネント520は、定数(例えば、MyFamily)の値を判定することを試みて、電子メールアプリケーションまたはローカル化されたデータレジストリにアクセスすることができる。コンポーネント520が、そのドメインまたはローカル化されたデータレジストリで値を解決できない場合に、コンポーネント520は、定数値を判定するかすべての使用可能なドメインを検査し終えるまで、追加のアクセス可能なドメインを検査し続けることができる。一例で、アクセッサコンポーネントは、電子メールアプリケーションで次のようなデータを見つけることができる。
Figure 0004896726
定数MyFamilyに関連するグループのメンバのXML表現が、例示だけのために使用されていることに留意されたい。グループの母集団は、本発明によって多数の形で定義し、および/または実現することができる。したがって、アクセッサコンポーネント520は、電子メールアプリケーションから取り出したデータに基づいて、MyFamilyをBob Jones、Barb Jones、Michael Jones、およびJason Jonesに解決するかリンクすることができる。しかし、アクセッサコンポーネント520は、他のドメインの検査を継続して、データの完全さおよび正確さを保証することができる。例えば、アクセッサコンポーネントは、カレンダアプリケーションで<MySister>Jennifer Jones</MySister>を見つけることができ、この値を、定数MyFamilyに関係する値のストリングに追加することができる。
これまでに述べた定数(例えば、MyFamily、MyCoworkers、MyFriends、MyFavorite Musicians)は、所与のユーザに関して定義されるので、ファーストオーダー定数と称する。アクセッサコンポーネント520またはアクセッサは、ユーザの識別または他の開始点のキーオフ(key off)することができる。プリファレンスを使用して前に定義されたグループ(例えば、定数によって命名された)を組み合わせることによって、第Nオーダー定数をユーザが構成し、保存することができることに留意されたい。例えば、前置詞句のセマンティクスに似た機能性を提供する定数の名前を有するグループの組合せを検討されたい。例えば、ユーザは、FriendsOfMyFamilyまたはEmailsFromPreferredCustomersInAppointmentsTodayのようなグループを表す定数を構成し、保存することができる。別の展望から、定数式は、定数アクセッサとして表し、他の定数と組み合わせることもできるアイテムのフィールドに対する条件に類似する。
したがって、定数アクセッサは、異なるドメインにまたがるデータへのナビゲーションを提供する。図式化されたロジックとナビゲーション的アクセッサの組合せによって、非プログラマがクロスドメインプリファレンスを記述することが可能になる。さらに、比較的少数のアクセッサ制約に組み合わされた比較的少数の条件クラスは、そうでなければアプリケーション開発者によって予想される必要がある、多数の重要で強力な条件の指定を容易にする。
さらに、プリファレンスグループも指定できることに留意されたい。エンドユーザによって定義された判断ロジックは、プリファレンスの1つまたは複数のセットによって表される。したがって、プリファレンスグループを、関連するプリファレンスのグループのコンテナとして定義することができる。プリファレンスグループ内のプリファレンスは、(1)同一のプリファレンスクラスに属し、(2)一緒に評価することができ、その結果は、衝突解決の対象になる。さらに、プリファレンスグループ内のプリファレンスを、集合的にイネーブルし、ディスエーブルすることができる。プリファレンスの集合的なイネーブルおよびディスエーブルは、多数のシナリオで有用になる可能性がある。例えば、エンドユーザが、仕事場にいる場合にプリファレンスの1つのセットを有し、家にいる場合にプリファレンスの別のセットを有することができる。したがって、プリファレンスグループを、ユーザコンテキストに基づいてイネーブルまたはディスエーブルすることができる。
論理スキーマ400に、クロニクル435も含めることができる。多数の情報エージェントアプリケーションが、分別のある判断を行うために、状態を維持することを必要とする。単純な例として、ニュース出版情報エージェントアプリケーションを検討されたい。エンドユーザは、興味のあるニュース記事をサブスクライブする。イベントフィードは、ニュース記事の安定したストリームを伝える。1つの問題が、わずかに異なる内容と同一のタイトルを有する同一の記事が複数回到着する場合があることである。このコンテキストでは、分別のある条件が、IsNewArticle()になる。この条件は、タイトルが前に見られたものでないことを検査することができる。もう1つの例は、更新の安定したストリームが、記事を速報にするかどうかを検査することである。このタイプの機能性をイネーブルするために、イベントが処理される際に状態を維持する必要がある。この状態は、アプリケーションヒストリの表現なので、本明細書では、この状態をクロニクルと呼ぶ。
情報エージェントスキーマ開発者は、クロニクルを定義することができる(例えば、リレーショナルデータベースのテーブルとして、またはオペレーティングシステムによって管理されるフォルダ内で)。より重要なことに、スキーマ開発者は、アプリケーション状態を更新するために、イベント処理のクリティカルなステージで実行することができるロジックを定義することができる。例えば、イベントが速報に対応するかどうかを計算するのに適当な時は、イベントが処理される前である。さらに、ニュース記事が処理され、その結果、同一タイトルの後続イベントが重複として示されるという事実を記録するのに適当な時は、イベントが処理された後である。さらに、クロニクルを使用して、アクションヒストリならびにイベントヒストリを記録することもできることに留意されたい。
開発者は、論理スキーマ400内のプリファレンスクラス425の一部として、衝突解決コンポーネント445で衝突解決のプロシージャまたはロジックを指定することができる。イベントが発生する場合に、複数のプリファレンスがそのイベントと一致するならば、複数のアクションが起こることができる。したがって、実行の順序および/または最終的に行われるアクションを決定するシステムおよび方法が望まれる。複数アクションのトリガを扱う、少なくとも3つの形がある。第1に、スキーマ400は、エンドユーザがアクションまたはプリファレンスの優先順位を定義することを可能にすることができる。例えば、エンドユーザは、すべてのプリファレンスに優先順位を割り当てることができる。さらに、エンドユーザは、あるプリファレンスに処理停止インジケータ(例えばフラグ)を割り当てることができる。したがって、あるイベントが複数のアクションをトリガする場合に、アクションを、優先順位の順序で実行することができる。さらに、その代わりに、複数のプリファレンスが、プリファレンスグループ内で一致する場合に、最高優先順位のプリファレンスを実行し、それ以外を破棄することができる。さらに、スキーマ400は、インジケータを含むプリファレンスが他のプリファレンスと同時にトリガされる状況を扱うためにユーザが処理停止インジケータをあるプリファレンスにアタッチすることを可能にするなど、エンドユーザが衝突解決プロシージャを指定することを可能にすることができる。衝突を解決できるもう1つの形が、スキーマ400内でアクションクラス優先順位を定義することである。したがって、スキーマ開発者は、アクションクラス優先順位を指定することができる。例えば、MoveToFolderアクションクラスに、Deleteアクションクラスより高い優先順位を指定することができる。同一アクションクラスの複数のアクションが同時にトリガされる場合に、他の衝突シナリオが生じる可能性がある。スキーマ開発者は、複数の衝突解決ロジックを定義して、このタイプの状況を処理することができる。例えば、所望のポップアップのボリュームをセットするアクションクラス(例えば、SetVolume())があると仮定する。さらに、あるイベントが、2つのアクション、SetVolume(50)およびSetVolume(70)をトリガすると仮定する。この場合に、衝突解決コンポーネント445で定義される衝突ロジックを、2つのレベルの最小値、最大値、または平均に対応するアクションが行われるように定義することができる。
プリファレンス実行順序は、明示的実行コンポーネント450を介してスキーマ400で指定することもできる。いくつかの情況で、あるプリファレンスのアクションが別のプリファレンスの条件に影響する可能性があるので、プリファレンスの明示的順序付けが必要である。例えば、電子メールプリファレンスに関して、あるプリファレンスを使用して、着信メッセージの優先順位を判断することができ、別のプリファレンスを記述して、メッセージの優先順位に反応し、それを操作する方法を決めることができる。エンドユーザプリファレンス作成者は、通常は、経験のないプログラマである。本発明の態様によれば、エンドユーザは、副作用を有し、したがって順序付け要件を有するプリファレンスまたはルールを記述する必要がない。スキーマ開発者が、エンドユーザから順序付け依存性を隠蔽できることが好ましい。これは、プリファレンスクラス順序付け、明示的チェーニング、およびプリファレンスグループ順序付けを含むがこれに制限されない複数の異なる形で達成することができる。プリファレンスグループ順序付けによって、スキーマ開発者が、別のプリファレンスクラスの前に実行されるように、あるプリファレンスクラスを順序付けることができる。前述の例では、メッセージプロパティ(例えば、優先順序)を確立するプリファレンスクラスが、メッセージに反応するプリファレンスクラスの前に来なければならない。本発明の態様によれば、エンドユーザに提示されるユーザインターフェースをペインに分割し、各プリファレンスクラスがそれ自体のペインを有するようにすることができる。明示的チェーニングによれば、スキーマ開発者は、新しいイベントを送出するアクションおよびその順序付けを指定することができる。したがって、プリファレンスクラスを、プリファレンスクラス順序付けではなく、アクション−イベントチェーニングを用いて実施することができる。さらに、スキーマ開発者は、プリファレンスグループを使用することによって実行順序付けを指定することができる。プリファレンスグループ順序付けを使用することによって、プリファレンスクラス順序付けと同一の機能が、より柔軟な形で提供される。例えば、すべてのプリファレンスグループは、その中に正確に1つのプリファレンスを有することができ、これは、プリファレンスの完全に順序付けられたシーケンシャルリストの同等物につながる。
「必要な」条件およびアクションを、必要条件およびアクションコンポーネント455を使用することによって、プリファレンスクラス425の一部としてスキーマ400で指定することもできる。すべてのプリファレンスクラスに、必要条件および必要アクションが含まれる。必要条件および必要アクションを使用して、すべてのプリファレンスに共通するあるパターンを強制することができる。例えば、サーバで適用される馴染みのある電子メール処理の例で、Inboxプリファレンスに対する必要条件を、そのプリファレンスの所有者が電子メールの受信者でもあることとすることができる。
テンプレート460も、論理スキーマ400で定義することができる。経験のないエンドユーザによるロジックのオーサリングを容易にするために、エンドユーザが採用し、利用するために、開発者またはサードパーティンがテンプレートを提供することができる。その結果、テンプレートが、エンドユーザが使用可能である場合に、システム100は、プリファレンステンプレートの抽象化をサポートしなければならない。これは、単に、パラメータの一部を指定されていない、永続した完全なプリファレンス(条件式およびアクションが選択される)に対応することができる。
スケジューリングされたプリファレンスおよび再帰プリファレンスコンポーネント465を介して、スケジューリングされたプリファレンスおよび再帰プリファレンスを扱うようにスキーマ400を定義することもできる。多くの情報エージェントアプリケーションが、再帰するスケジュールで評価されるプリファレンスを使用することを望む可能性がある。多数の例の1つに、すべての就業日の午後5時にサマリ状況を送信するプリファレンスが含まれる。本発明の一態様によれば、スケジューリングされ再帰する機能性を、2つの抽象化を使用することによってスキーマ400で実施することができる。第1に、システム定義のイベントクラス(例えば、TimerEvent)を使用して、スケジューリングされたアクティビティのイベントフックを提供することができる。このイベントクラスは、様々な定期的な粒度に構成することができる。さらに、イベントに関連するデータに、現在時刻および前の発火時刻を含めることができる。第2に、すべてのスケジューリングされたプリファレンスに、次のような条件を含めることができる。
RecurrenceInWindow(RecurrenceSchedule, StartTime, EndTime)、ただし、
・ RecurrenceScheduleは、エンドユーザ指定からキャプチャされる、所望の再帰するパターンを表し;
・ StartTimeは、開発者によって、タイマイベントの前の時刻にバインドされ;
・ EndTimeは、開発者によって、タイマイベントの現在の発火時刻にバインドされる。
要するに、論理スキーマ400に、エンドユーザプリファレンスの論理構成ブロックを提供するために、複数の異なるコンポーネントまたはセクションを含めることができる。スキーマは、任意の形、例えばXMLファイルの形をとることができる。スキーマが完了したならば、スキーマを、データベース表現にコンパイルし、例えばデータストア150(図1)に保管することができる。スキーマファイルを、直接にオーサリングすることができ、あるいは、Visual Studioなどのアプリケーションを使用して構成することができることを諒解されたい。したがって、システムコンパイラは、複数のスキーマエディタアプリケーションを使用して作成されたスキーマファイルをサポートできなければならない。
アプリケーション実行
情報エージェントアプリケーションの実行を、3つの別個のカテゴリすなわち、イベント処理、プリファレンス処理、およびアクション処理に副分割することができる。イベント処理は、イベントがどのようにキャプチャされ、それらのイベントがプリファレンスロジックをどのようにアクティベートするかを処理する。プリファレンス処理は、部分的に異なるプリファレンス処理モードに依存して、複数の異なる形で達成することができる。最後に、アプリケーション実行は、アクションをどのように処理するかの決定を伴う。
イベントは、システムAPI110(図1)を使用して、一部のアプリケーションによって、明示的にイベントをサブミットすることによってキャプチャすることができる。イベントは、個別にまたはバッチとして一緒にサブミットすることができる。イベントキャプチャに関する、次を含むがこれに制限されない多数のシナリオがある。
・ 通常のアプリケーションロジックの一部として。例えば、Exchange SMTPプロバイダが、新しいSMTPメッセージを受信し、情報エージェントイベントを明示的に送出することができる。
・ データ変化から。例えば、データがデータストア150内で変化する場合にIAロジックのイベントがトリガされる。
・ オペレーティングシステムから。例えば、アプリケーションが、オペレーティングシステムおよび/またはそれに関連するランタイムをリスンし、特定のアクションの検出時にイベントを送出することができる。
・ 情報エージェントプリファレンスから。あるプリファレンスのアクションが、プリファレンス評価にまたがるチェーニングにつながるもう1つのイベントを送出することができる。
・ ユーザが、イベントが生成されることを明示的に指定することができる。例えば、ユーザは、フォルダの各ファイルに対応するイベントを生成することを指定することができる。
さらに、システム100が、より大きいアプリケーションの能動的実行を必要としないイベントキャプチャロジック用のホスティングサービスを提供することができる。例えば、情報エージェントアプリケーションが、あるオペレーティングシステムイベントがアプリケーションアクティビティをトリガすることを望む場合がある。その結果、この機能性だけのために別々のアプリケーションを実行することを必要とするのではなく、サービスでこのイベントプロバイダをホスティングすることが可能である。
プリファレンスは、イベントの発生によってアクティベートされる。その処理は、同期式、非同期式、またはこの2つの組合せのいずれかとすることができる。同期処理では、イベントサブミッションとプリファレンス評価の間にとるに足らない遅延がある。その一方で、非同期処理は、イベントサブミッションとプリファレンス評価の間のかなりの遅延を有する。本発明のシステムは、処理の両方のモデルをサポートし、イベントバッチサブミッションに基づいて、リアルタイムでこのモデルの間で選択することができる。
さらに、本発明の一態様によれば、プリファレンス処理は、プリファレンスを効率的に処理するために、データベースクエリの威力を利用する。開発者に、および最終的にエンドユーザに公開されるのが、一時に1つモデルに従って条件機能を指定できるようにする宣言的プログラミングモデルである。一時に1つプログラミングモデルは、使用が最も自然であり、開発者およびユーザが1つのプリファレンスに対して1つのイベントを指定できるようにするモデルである。しかし、本発明の態様によれば、システム100は、セット指向の形で実行され、インデクシングおよび重複除去などの技法を使用する、条件クラスクエリを作成する。これは、プリファレンスが効率的な形で評価されると同時に、開発者およびエンドユーザに、一時に1つの形でプログラムを概念化させ、記述させるという点で、有益であり、これは、理解および記述が簡単であるが、複数のプリファレンスを実行する効率的でない形である。さらに、複数のプリファレンスをバッチで処理することができるが、プリファレンスを、イベント発生時に個別に評価できることに留意されたい。
図6を見ると、本発明の態様によるプリファレンス評価のシステム600が示されている。システム600に、データストア150、複数のテーブル610、プリファレンス実行エンジン160、および結果テーブル630が含まれる。データストア150に、複数のテーブル610が収容され、この複数のテーブル610は、開発者スキームならびにエンドユーザプリファレンスから、システム100によって作られる。イベントの発生の結果として、プリファレンス実行エンジンが、例えばデータストア150に保管されたテーブルから、プリファレンスを受け取るか取り出す。次に、実行エンジン160は、プリファレンスならびにいくつかのストアドプロシージャ(データとして保管することもできる)を使用して、テーブル610を照会し、結果テーブル630を作る。結果テーブル630には、指定されたアクションをそれに対して開始できる、その条件が満足されたプリファレンスが保管される。
テーブル610の個数および複雑さは、エンドユーザプリファレンスをサポートするために開発者によって記述されたスキーマの複雑さに依存して変化する可能性がある。下で、システム600が、プリファレンスを処理するためにデータベーステーブルおよびクエリをどのように使用するかを明らかにするために、例を提示する。この例では、プリファレンスの複数のグループを使用しようとする2人の個人、JackおよびJillがいる。上で説明したように、JackおよびJillがエンドユーザプリファレンスを指定する前に、スキーマを作らなければならない。スキーマは、上で述べたように複数の部分を有するが、理解を簡単にするために、非常に単純なスキーマを、本明細書で説明する。スキーマの本質的な部分の1つが、イベントクラスの定義である。この例では、2つのイベントクラス、EmailEventsおよびStockeventsを検討する。本明細書に添付された付録を見ると、この2つのイベントクラスおよび3つのプリファレンスクラスのスキーマ定義を示す擬似コードが示されている。2つのプリファレンスクラスは、EmailEventsに基づき、第3のクラスは、StockEventsに基づく。情報システム100は、このスキーマを使用して、プリファレンスクラステーブルおよび条件クラスを作ることができ、これをデータストア150に保管することができる。例えば:
Figure 0004896726
次に、JackおよびJillは、プリファレンスを定義することができる。この例において、Jackが、3つのプリファレンスグループ、PG(Jack,1)、PG(Jack,2)、およびPG(Jack,3)を定義すると仮定する。さらに、Jackは、次のように、このグループの間に分散する5つのプリファレンスを定義する。
Figure 0004896726
この例において、Jillが、2つのプリファレンスグループ、(Jill,1)および(Jill,2)を定義すると仮定する。さらに、Jillが、次のようにこのグループの間で分散する5つのプリファレンスを指定すると仮定する。
Figure 0004896726
情報エージェントシステム100は、これらのプリファレンスを使用して、プリファレンスおよびそれに関連する条件を記載した追加のリレーショナルデータベーステーブルを作ることができる。次の例のテーブルを一時に1つ検討し、これらがプリファレンスの評価にどのように使用されるかを検討されたい。
下に示されたPreferenceGroupsテーブルに、JackおよびJillが定義したプリファレンスグループごとに1行の、5つの行が含まれる。さらに、プリファレンスグループがイネーブルされるかどうかを示す列が指定されていることに留意されたい。上で説明したように、これは、例えば、ユーザが、家庭にいる場合にイネーブルされるプリファレンスのグループと、仕事場にいる場合にイネーブルされるプリファレンスのもう1つのグループを指定したい場合に有用である。ここでは、すべてのプリファレンスグループが、イネーブルされたものとして示されている。
Figure 0004896726
PreferenceGroupMemberShipテーブルも、どのプリファレンスがどのプリファレンスグループのメンバであるかを要約するために定義することができる。下に示されたこのテーブルには、プリファレンスごとに1つの、11個の行が含まれる。
Figure 0004896726
下のpreferenceテーブルをデータストア150に保管して、ユーザによって定義されたプリファレンスに関するデータを要約することができる。このテーブルには、10個のプリファレンスのそれぞれに対応する10行が含まれる。このテーブルが、重要な列および行だけを示すために連結されていることに留意されたい。
Figure 0004896726
上のpreferenceテーブルに合計14個のANDグループがあることにも留意されたい。さらに、上には合計19個の条件がある。これらのANDグループおよび条件に関する情報は、次のように追加テーブルにキャプチャすることができる。
Figure 0004896726
ANDグループidは、前のテーブルから順次番号を付けられている。ConditionCountレコードは、ANDによって接続される条件の数を記録する。上のテーブルの唯一の驚くべき行が、下に示す行である。
7 11 1 -- From (Bob) AND !Contains
(Work)
ConditionCountが、期待される2ではなく1であることに留意されたい。クエリ評価のNOTの存在を考慮に入れるために、条件カウントは、ANDグループ内の、その前にNot(!)がない条件だけの合計と定義される。その前にNOTがある条件は、下に示された別々のテーブルで要約することができる。
ANDGroupsを、さらに、次の連結されたテーブルに示されているように、テーブルでANDGroupMembershipに関して定義することができる。
Figure 0004896726
上で注記したように、NOTを有する条件は、特殊な事例と考えることができ、次のようにそれ自体のテーブルで要約することができる。
Figure 0004896726
条件値テーブルも作成して、プリファレンスで指定された条件の値を保管することができる。このテーブルが、各条件に関連する2つのパラメータ値だけを許容することに留意されたい。この例において、これは、部分的に、すべての条件が1つのパラメータ値だけを有するので効率的であるが、条件が、2つを越える値を関連付けられることを許容される場合には、このテーブルを拡張することができ、あるいはその代わりに、別のテーブルをインスタンス化して、余分の条件値を保持することができる。
Figure 0004896726
ConditionsResultsテーブルも設けることができる。ConditionsResultsテーブルは、最終的な結果テーブル630の先駆物として使用することができる。ConditionsResultsテーブルは、条件クエリが実行される時に取り込まれる。条件クエリがまだ実行されていない時には、このテーブルにはまだ行がない。条件を評価し、このテーブルに取り込む例示的プロシージャを、下で開示する。
Figure 0004896726
前に述べたように、本発明の態様の1つは、条件機能の開発者への一時に1つモデルの公開を可能にするが、データベースクエリ効率を利用するセット指向の形で実行される条件クラスクエリを最終的に作成する宣言的プログラミングシステムを提示することである。したがって、1対1条件クラス宣言をクエリに変換することができる。例えば、EmailEventsで、エンドユーザプリファレンスが、電子メールの送信者に依存するアクションを行うことができる(例えば、JackのP1)。したがって、エンドユーザは、ユーザインターフェースを介してMailIsFrom(Mary)を記述することができる。しかし、プリファレンスを実行する場合に、システム600は、ユーザ条件ステートメントを表すデータベースクエリを実行する。例えば、システムは、ユーザ宣言の代わりに次のSQLクエリステートメントを実行することができる。ここで、CV.ParamValue1=「Mary」である。
Figure 0004896726
したがって、開発者は、各条件のクエリコードを定義し、テーブルに保管しなければならない。可能ではあるが、新しいテーブルをこの明示的な目的のために作成する必要はない。前に定義したConditionClassesテーブルを単純に変更して、下の擬似コードに示されているようにクエリテキストを含めることができる。
Figure 0004896726
テーブル610のすべてを定義したならば、そのようなデータに対してプリファレンスを評価して、結果テーブル630に取り込み、その後、それに関連するアクションを実行することができる。プリファレンスは、クエリを評価することによって実行することができる。クエリは、1つまたは複数のプロシージャを使用することによって評価し、処理することができ、このプロシージャは、データストア150にデータとして保管することができ、本発明の態様に従って、オンデマンドで構成することができる。複数のプロシージャを、条件およびプリファレンスの評価専用にすることができ、その後、結果テーブルに、関連するアクションの実行を開始できるように、プリファレンスおよびそのプリファレンスが真と評価されたどうかを示すしるしを取り込むことができる。例えば、次のプロシージャを使用して、条件を評価するか照会し、結果をConditionResultsテーブルに保管することができ、その後、その結果を評価して、結果テーブル630に取り込むことができる。
Figure 0004896726
さらに、すべての条件クエリが実行されるように、上のプロシージャをループと共に使用することができることを諒解されたい。しかし、上のプロシージャを、条件ごとに1回呼び出して、増分条件評価を可能にすることが好ましい可能性がある。すべての条件を評価したならば、別のプロシージャを使用して、プリファレンスを評価することができ、このプロシージャは、しばしば、プリファレンスの間のBoolean演算子を有する条件である。
本明細書で説明するすべてのプロシージャと同様に、なかんずく、プログラマスタイル、効率、および構成されるテーブルの性質に依存して、プロシージャを記述できる複数の異なる形がある。理解のために、下のプロシージャを、本発明の態様に従ってプリファレンスを評価するのに使用できるクエリの例として提供する。単一の実行ではなく、プリファレンスの異なるANDGroupsを増分的に評価する、より効率的なクエリプロシージャを使用できることに留意されたい。
Figure 0004896726
上のプロシージャが、最終的な結果テーブル630の行をどのように作るかを明確にするために、少数の例を下に示す。
例1:
ConditionResultsが、次の2行を有すると仮定する。
Figure 0004896726
プリファレンス1の2つの条件の間にANDがある。その結果、このプリファレンスは、上の条件の両方が真である場合に限って真になる。この両方の条件が、条件カウントが2である第1のANDGroupに属する。したがって、上のテーブルが、AndGroupMembershipテーブルと結合される場合に、次のテーブルがもたらされる。
Figure 0004896726
group byを実行した後に、次の行が得られる。
Figure 0004896726
ここで、(Pref.Id,ANDGroupId)が、ANDGroupsテーブルのキーを形成する。そこでのルックアップは、2の条件カウントを提供し、これはsum(Bool)と等しい。したがって、このプリファレンスは真であり、結果テーブル630に追加することができる。
例2:
ConditionResultsが次の2行を有すると仮定する。
Figure 0004896726
プリファレンス2の2つの条件の間に、ORがある。したがって、このプリファレンスは、2つの条件のいずれかが真である場合に限って真と評価される。これらの条件は、それぞれ2番目および3番目のANDGroupsに属し、条件カウントは、両方とも1である。したがって、上のテーブルをAndGroupMembershipテーブルと結合する場合に、次のテーブルがもたらされる。
Figure 0004896726
上のテーブルをグループ化した後に、次が得られる。
Figure 0004896726
上の行の両方が、having文節を満足し、したがって、distinctを適用した後に、プリファレンス(Pref.Id=2,Event Id=101)が結果テーブル630にコピーされることがわかる。
例3:
この最後の例について、ConditionResultsテーブルが次の2行を有すると仮定する。
Figure 0004896726
プリファレンス7の条件が、実際には、
From (Bob) and !Contains (Work)
であったことを想起されたい。NOTが存在すると、上の2行目の1が、本発明の態様に従って−1に変更される。次は、そのような機能性を提供する例示的クエリである。
Figure 0004896726
さらに、スマートクエリオプティマイザが使用される場合に、NOTテーブルが空であることに留意すると、このクエリが即座にリターンすることに留意されたい。したがって、上のテーブルは、次のようになる。
Figure 0004896726
この条件の両方が、11番目のANDGroupに属する。ANDGroupテーブルから、このプリファレンス(preference,ANDGroup)の条件カウントが1であると判定することができる。0≠1なので、このプリファレンス評価クエリから生じる行はない。しかし、第2行がconditionResultsテーブルにない場合に、1(=1)の合計を有し、プリファレンス7が真と評価されることに留意されたい。
結果テーブル630に取り込んだ後に、プリファレンスアクションを実行することができる。アクションは、情報エージェントシステム100によって、または、システム100からプリファレンス結果を取り出し、これらに作用することによって、情報エージェントアプリケーションによって実行することができる。アクションが、情報エージェントシステム100ではなくアプリケーションによって実行される場合に、イベントサブミッションアプリケーションまたは他のアプリケーションを使用することによって、アクションをシステム100から取り出すことができる。システム100によって、ホスティングサービスを、アクションを取り出し、実行することができるアプリケーションアクションハンドラにシステム100によって供給することができる。
優先順位アクションおよびコンテキスト分析
次の議論は、通知またはメッセージなどの生成されたアクションに関連する複数の情報に、例えばユーザまたはシステムへの送信のために優先順位システムによって自動的に優先順位を付けることを可能にするシステムおよび方法に関する。さらに、この議論は、説明を単純にするために通知の優先順位およびコンテキスト分析に焦点を合わせるが、どのアクションでも、類似する形で優先順位およびコンテキスト分析を使用できることを諒解されたい。優先順位システムは、ユーザにとっての学習された重要性に従って1つまたは複数の受け取られるメッセージに優先順位を付けるために明示的におよび/または暗黙のうちにトレーニングできるクラシファイヤを使用することができる。例として、通知を、類似する度合の重要性を有する例のトレーニングセットまたは通知のタイプを介して、高、中、低、または他の重要性の度合として分類することができる。バックグラウンドモニタを設けて、メッセージ処理に関するユーザのアクティビティを監視して、メッセージ重要性に関するユーザの個人的判断に従ってクラシファイヤをさらに洗練またはチューニングすることができる。他の優先順位分類に、メッセージの遅れた再検討または処理の時間に関連する損失に関する判定を含めることができる。
メッセージまたは他の通知に自動的に優先順位を付けた後に、ユーザは、複数のより重要でないおよび/または関連しないメッセージをソートする必要なしに、より重要なメッセージを再検討することができる。メッセージを、さらに、重要性に関して1つまたは複数のフォルダに収集することができ、ここで、ユーザは、望みの時に、類似する分類された重要性を有するメッセージを再検討することができる。情報エージェントシステム100などの他のシステム(例えば、通知コンポーネント180を介して)は、判定された優先順位に基づいて、メッセージを1つまたは複数の通知シンク(例えば、携帯電話機、ハンドヘルドコンピュータ)に向けることができる。例えば、電子メールメッセージが、高い重要性を有すると判定される場合に、情報エージェントシステム100は、ユーザが現在自分の机にいてメッセージを受け取るかどうかを判定することができる。そうでない場合には、通知プラットフォームは、セル電話機または家庭のラップトップコンピュータなど、現在ユーザが自由に使える可能性が最も高い通信デバイスにメッセージをリダイレクトすることができ、ユーザは、重要なメッセージまたは緊急のメッセージについて通知を受けることができる。
図7を参照すると、システム700に、本発明の態様による優先順位システム712および通知アクションアーキテクチャが示されている。優先順位システム712は、1つまたは複数のメッセージまたは通知714を受け取り、関連するメッセージの優先順位または重要性の尺度(例えば、メッセージが高い重要性または低い重要性を有する確率値)を生成し、1つまたは複数のメッセージを関連する優先順位と共に出力716に供給する。下で詳細に説明するように、クラシファイヤは、メッセージ714に優先順位の尺度を自動的に割り当てるように構成し、トレーニングすることができる。例えば、出力716をフォーマットし、メッセージに、高、中、低のカテゴリ、または他のカテゴリの重要性の度合にそのメッセージが属する確率を割り当てることができる。メッセージを、例えば重要性の判定されたカテゴリに従って、電子メールプログラム(図示せず)のin boxで自動的にソートすることができる。ソートに、重要性の定義されたラベルを有するシステムフォルダにファイルを向けることも含めることができる。これに、フォルダに、低、中、高などの重要性の度合を用いてラベルを付けさせることを含めることができ、特定の重要性を有すると判定されたメッセージは、関連するフォルダにソートされる。同様に、1つまたは複数のオーディオサウンドまたはビジュアルディスプレイ(例えば、アイコン、シンボル)を適合させて、所望の優先順位を有するメッセージを受け取ったことをユーザに警告することができる(例えば、高優先順位メッセージに3回ビープ、中に2回ビープ、低に1回ビープ、高優先順位に赤または点滅する警告シンボル、中優先順位メッセージを受け取ったことを示す緑の点滅しない警告シンボル)。
本発明のもう1つの態様によれば、情報エージェントシステム717(図1の100)を、優先順位システム712と共に使用して、ユーザがアクセス可能な1つまたは複数の通知シンクに優先順位付きメッセージを向けることができる。下で詳細に説明するように、IAシステム717は、優先順位付きメッセージ716を受け取り、例えば、いつ、どこで、どのようにユーザに通知するかに関する判断を行うように適合させることができる。例として、IAシステム717は、通信モーダリティ(例えば、セル電話機、携帯情報端末(PDA)などのユーザの現在の通知シンク718)と、ユーザのありそうな位置および/またはユーザの注意のありそうなフォーカスを判定することができる。高重要性電子メールが受信された場合に、例えば、IAシステム717は、ユーザ位置/フォーカスを判定し、ユーザに関連する通知シンク718にメッセージを向ける/再フォーマットすることができる。低優先順位のメッセージ716が受信された場合に、IAシステム717を、例えば望み通りに後に再検討するためにその電子メールをユーザのin−boxに残すように構成することができる。下で詳細に説明するように、他のルーティングおよび/または警告システム719を使用して、優先順位付きメッセージ716をユーザおよび/または他のシステムに向けることができる。
この説明の次のセクションでは、電子メールなどのテキストファイルの優先順位の生成を、自動分類システムおよびプロセスを介して説明する。説明するテキストの優先順位の生成は、下で詳細に説明する通知プラットフォームなどの他のシステムで使用することができる。このセクションの説明は、図8および図9に関して提供されるが、前者は、テキストクラシファイヤの明示的および暗黙のトレーニングを示す図であり、後者は、テキストクラシファイヤに入力されることによってテキストの優先順位がどのように生成されるかを示す図である。説明は、図10および図11に関しても提供され、これらは、それに従ってテキストの優先順位を分類できる異なるスキーマの図であり、図8および図11に関して、テキストタイプに依存して適用可能とすることができるコスト関数を示すグラフである。
図8を参照すると、テキスト/データクラシファイヤ820は、優先順位に関する分類を実行するために、矢印822によって表されるように明示的にトレーニングすることができ、矢印824によって表されるように暗黙のうちにトレーニングすることができる。矢印822によって表される明示的トレーニングは、一般に、クラシファイヤ820構成の初期フェーズで行われ、矢印824によって表される暗黙のトレーニングは、通常、クラシファイヤ820が構成された後に、例えばバックグラウンドモニタ834を介してクラシファイヤ820を微調整するために行われる。本明細書で、分類トレーニングおよび実施手法を示す例示のために、SVMクラシファイヤを参照して具体的な説明を行う。他のテキスト分類手法に、ベイジアンネットワーク、決定木、および独立性の異なるパターンを提供する確率分類モデルが含まれる。本明細書で使用されるテキスト分類は、優先順位のモデルを展開するのに使用される統計的回帰を含む。
本発明の一態様によれば、明確に理解されるサポートベクトルマシン(Support Vector Machine、SVM)が、クラシファイヤ820として使用される。ナイーブベイズ、ベイズネット、決定木、および他の学習モデルなど、他のクラシファイヤモデルも使用できることを諒解されたい。SVMは、クラシファイヤコンストラクタおよび特徴選択モジュール826内の学習フェーズまたはトレーニングフェーズを介して構成される。クラシファイヤは、入力属性ベクトルx=(x1,x2,x3,x4,xn)を、入力がクラスに属する信頼度すなわちf(x)=confidence(class)に写像する関数である。テキスト分類の場合に、属性は、単語、句、または単語から導出される他のドメイン固有属性(例えば、音声の一部、キー用語の存在)であり、クラスは、関心をもたれたカテゴリまたは領域(例えば、優先順位のレベル)である。
SVMおよび他の帰納学習手法の態様は、ラベル付けされたインスタンスのトレーニングセットを使用して、分類関数を自動的に学習することである。トレーニングセットは、クラシファイヤコンストラクタ826に関連するデータストア830内に図示されている。図からわかるように、トレーニングセットに、特定のカテゴリに関連する潜在的なおよび/または実際の要素または要素の組合せ(例えば、単語または句)を示すグルーピングG1からGNのサブセットを含めることができる。データストア830に、複数のカテゴリ1からMも含まれ、グルーピングを、1つまたは複数のカテゴリに関連付けることができる。学習中に、入力特徴をクラスの信頼度に写像する関数が学習される。したがって、モデルを学習した後に、カテゴリは、入力特徴の重み付きベクトルとして表される。
カテゴリ分類に関して、バイナリ特徴値(例えば、単語がカテゴリに現れるか否か)または実数値の特徴(例えば、単語が重要性重みrを有して現れる)が、しばしば使用される。カテゴリ集合に、多数の独自の用語が含まれる可能性があるので、特徴選択は、一般に、カテゴリ化に機械学習技法を適用する場合に使用される。特徴の数を減らすために、特徴を、総合的な頻度カウントに基づいて除去することができ、カテゴリへのあてはめに基づく少数の特徴に従って選択することができる。カテゴリへのあてはめは、相互情報量、情報利得、χ二乗、および/または実質的にすべての他の統計選択技法を介して判定することができる。これらのより小さい記述が、SVMへの入力として働く。線形SVMが、適当な一般化精度を提供し、適度に高速の学習を提供することに留意されたい。非線形SVMの他のクラスに、多項式クラシファイヤおよびラジアル基底関数(radial basis function)が含まれ、これらを、本発明に従って使用することもできる。
クラシファイヤコンストラクタ826は、データストア830内のグルーピングおよび関連するカテゴリを分析して、入力ベクトルをクラスの信頼度に写像する関数を「学習」するために、学習モデル832を使用する。SVMを含む多数の学習モデルについて、カテゴリのモデルを、特徴重みwのベクトルとして表すことができ、カテゴリごとに1つの学習された重みのベクトルを設けることができる。重みwが学習される場合に、新しいテキストが、xとwの内積を計算することによって分類され、ここで、wは、学習された重みのベクトルであり、xは、新しいテキストを表すベクトルである。シグモイド関数を設けて、SVMの出力を確率Pに変換することもできる。確率は、それから優先順位を決定できる、カテゴリまたはクラスにまたがる匹敵するスコアを提供する。
SVMは、関数形式がトレーニングの前に定義される、パラメータ化された関数である。SVMは、例のセットから関数をあてはめるので、SVMのトレーニングは、一般に、ラベル付けされたトレーニングセットを必要とする。トレーニングセットは、N個の例のセットからなるものとすることができる。各例は、入力ベクトルxiとカテゴリラベルyjからなり、カテゴリラベルは、入力ベクトルがカテゴリに含まれるかどうかを記述する。カテゴリごとに、N個の例を用いてトレーニングされたSVMに、N個の自由パラメータを設けることができる。これらのパラメータを見つけるために、二次計画法(QP)問題を、よく理解されているように解く。QP問題を解く、複数の周知の技法がある。これらの技法に、Sequential Minimal Optimization技法ならびに他の技法を含めることができる。図9からわかるように、入力ベクトルxに変換されたテキスト入力936が、カテゴリごとにクラシファイヤ920に適用される。クラシファイヤ920は、クラシファイヤコンストラクタ826によって判定された学習された重みベクトルw(例えば、カテゴリごとに1つの重みベクトル)を使用し、内積を形成して優先順位出力938を形成し、ここで、確率Pを入力テキスト936に割り当てて、1つまたは複数の関連する優先順位(例えば、高、中、低)を示すことができる。
図8に戻って、矢印822によって表されるテキストクラシファイヤ820のトレーニングに、特徴選択を使用することを含む、826内のクラシファイヤを構成することが含まれる。明示的トレーニングフェーズでは、クラシファイヤ820に、例えば、時間にクリティカルなテキストおよび時間にクリティカルでないテキストの両方を提示することができ、その結果、クラシファイヤがこの2つを区別できるようにすることができる。このトレーニングセットは、ユーザによって提供することができ、あるいは、標準のまたはデフォルトのトレーニングセットを使用することができる。トレーニングコーパスを与えられれば、クラシファイヤ820は、まず特徴選択プロシージャを適用し、このプロシージャは、最も識別力のある特徴を見つけることを試みる。このプロセスでは、相互情報量分析を使用する。特徴選択は、自然言語処理を用いてタグ付けされた句または音声の一部など、使用可能にされた1つまたは複数の単語または上位の区別を操作することができる。すなわち、テキストクラシファイヤ820を、特別にタグ付けされたテキストを用いてシーディングして、重要と思われるテキストの特徴を区別することができる。
テキスト分類の特徴選択では、通常、単一の単語の検索を実行する。単一の単語に頼ること以外に、ドメイン固有の句および特徴の上位パターンも使用可能にされる。特殊なトークンによって、分類を機能強化することもできる。例えば、電子メールクリティカル性に関する学習されるクラシファイヤの質は、異なる時間クリティカル性を有する電子メールの間の区別に有用として識別された手細工で作られた特徴を特徴選択プロシージャに入力することによって、高めることができる。したがって、特徴選択中に、1つまたは複数の単語ならびに、異なるレベルの時間クリティカル性を有するメッセージの間の区別に有用である句およびシンボルが、検討される。
次の例からわかるように、メッセージのクリティカル性を識別するトークンおよび/または値のパターンに、下記の区別および下記のBoolean組合せが含まれる。
メッセージヘッダ内の情報
例えば:
TO:フィールド(受信者情報)
ユーザだけにあてられている
ユーザを含む少数の人にあてられている
別名および少数の人にあてられている
複数の別名および少数の人にあてられている
ユーザにCc:されている
ユーザにBcc:されている
FROM:フィールド(送信者情報)
潜在的に様々なクラスの個人(例えば、家族、友人)にセグメント化される、重要な人の事前に決定されたリストにある名前
ユーザの会社/組織の内部として識別された送信者
ユーザが報告する上司、
ユーザの上司の上司、
ユーザに報告する人
など、オンライン組織図から引き出された、ユーザに関する組織での関係の構造に関する情報
外部のビジネスピープル
過去時制情報
これには、次のような、既に発生したイベントに関する記述が含まれる。
We met
meeting went
happened
got together
took care of
meeting yesterday
未来時制情報
Tomorrow
This week
Are you going to
When can we
Looking forward to
Will this
Will be
会議および調整情報
Get together
Can you meet
Will get together
Coordinate with
Need to get together
See you
Arrange a meeting
Like to invite
Be around
解決された日付
明示的にまたは次のように省略される、日時を述べるテキストのパターンから示される将来および過去の日時
On 5/2
At 12:00
質問
疑問符(?)に隣接する単語、句
個人的要求の表示
Can you
Are you
Will you
you please
Can you do
Favor to ask
From you
必要の表示
I need
He needs
She needs
I’d like
It would be great
I want
He wants
She wants
Take care of
時間クリティカル性
happening soon
right away
deadline will be
deadline is
as soon as possible
needs this soon
to be done soon
done right away
this soon
by[日付]
by[時刻]
重要性
is important
is critical
単語、句+!
明示的な優先順位フラグ状況(低、なし、高)
メッセージの長さ
新しいメッセージのコンポーネントのバイト数
商業的およびアダルトコンテンツのジャンク電子メールのしるし
Free!!
単語+!!!
Under 18
Adult’s only
大文字で始まる単語の比率
非英数字文字の比率
上で示した単語または句のグルーピングが、クラシファイヤトレーニングを行うのに使用することができる例示的な単語、グルーピング、または句を示すことに留意されたい。他の類似する単語、グループ、または句を同様に使用することができ、したがって、本発明が、示された例に制限されないことを諒解されたい。
さらに、図8を参照すると、矢印824によって表されるクラシファイヤ820の暗黙のトレーニングを、例えばユーザのデスクトップコンピュータまたはモバイルコンピュータに常駐できるバックグラウンドモニタ834を介してユーザの作業または使用パターンを監視することによって、行うことができる。例えば、ユーザが働き、メールのリストを再検討する際に、時間にクリティカルなメッセージが最初に読まれ、優先順位の低いメッセージが、後で再検討され、および/または削除されると仮定することができる。すなわち、新しい電子メールを提示される場合に、ユーザを監視して、ユーザがその電子メールを即座に、どの順序で開くか、開かずに削除するか、および/または比較的短い時間で電子メールに返答するかを判定することができる。したがって、クラシファイヤ820は、ユーザが、働くかシステムを操作している間に監視されるように適合され、クラシファイヤは、バックグラウンドでのトレーニングによって周期的に洗練され、機能強化されたリアルタイムの意思決定のために更新される。クラシファイヤを作るためのバックグラウンド技法は、新しいトレーニングメッセージを用いてクラシファイヤ820を更新する技法から拡張することができる。
代替案では、大量のメッセージを収集することができ、ここで、新しいフィルタを、毎日のスケジュール、トレーニングセットに入れられるメッセージの新しい量の数、および/またはその組合せのいずれかによって、バッチプロセスで作成することができる。クラシファイヤに入力されるメッセージごとに、例えば、クラシファイヤの新しい事例を作成することができる。事例は、例えば高優先順位または低優先順位のいずれかのテキストの肯定および否定の例として保管される。例として、1つまたは複数の低、中、高の緊急性クラスを認識し、これらのクラスのそれぞれへのメンバシップの確率を使用して、期待されるクリティカル性を作ることができる。より多数のクリティカル性クラスを使用して、より高い分解能を求めることができる。例えば、図9からわかるように、メッセージのトレーニングセット940(例えば、超高、高、中、普通、低、超低など)を最初に使用して、942に示されているようにリアルタイム分類を達成するように、クラシファイヤ942をトレーニングすることができ、ここで、新しいメッセージは、トレーニングセット940によって解決される例の数に従って分類される。図9では、例示のために3つのそのようなカテゴリが示されているが、様々な度合の所望の重要性に従って、複数のそのようなカテゴリをトレーニングできることを諒解されたい。図からわかるように、新しいメッセージ944に、例えば、クラシファイヤ942によって割り当てられた優先順位に従って、ラベルを付け、タグを付け、および/または1つまたは複数のフォルダ946にソートすることができる。下で詳細に説明するように、割り当てられた優先順位を、さらに、後続システムによって使用して、メッセージをフォーマットし、ユーザに配布し、およびユーザのためのモーダリティ判定を行うことができる。
本発明のもう1つの態様によれば、数または値の推定は、例えば、フォルダのセットの1つとして事例またはメッセージにラベルを付けるのではなく、電子メールとのユーザ対話を監視することによって達成することができる。したがって、クラシファイヤは、更新され続けるが移動するウィンドウを有することができ、ここで、ユーザによって指定されるある年齢より新しいメッセージまたは文書の事例が、検討される。
例えば、メッセージの遅れた再検討に関連する一定の割合の損失を、メッセージの期待されるクリティカル性(expected criticality、EC)と称し、
Figure 0004896726
である。ここで、Cはコスト関数、dは遅延、Eはイベント、Hは電子メールのクリティカル性クラスであり、ECは、潜在的なクラスのコスト関数Cによって記述される損失の割合によって重みを付けられたクラスの尤度の合計として表される。
例として、図9を参照すると、電子メールメッセージなどのテキスト936が、クラシファイヤ920に入力され、クラシファイヤ920は、これに基づいて、テキスト936の優先順位938を生成する。すなわち、クラシファイヤ920は、例えば0から100%までの比率として測定された、優先順位938を生成する。この比率は、クラシファイヤ920の前のトレーニングに基づく、テキスト936が高優先順位または他の優先順位である尤度の尺度とすることができる。
上で説明した本発明では、クラシファイヤ920および優先順位938が、例えばトレーニング句の電子メールが高優先順位または低優先順位のいずれかとして構成されるスキームに基づくものとすることができる。このスキームを、図10に関して示すが、図10では、テキストクラシファイヤ1020が、高優先順位であるものとして事前に決定されるテキストのグループ1047および低優先順位であるものとして事前に決定されるテキストのグループ1048によってトレーニングされる。分析されるテキストは、クラシファイヤ1020に入力され、クラシファイヤ1020は、例えば分析されるテキストが高優先順位または低優先順位である尤度を測定したスカラ数1049を出力する。
例えば、図10および図11を参照すると、これらの図には、テキスト1036、1136が低優先順位、中優先順位、および高優先順位に分類されるスキームが示されている。上で説明したように、複数の他のトレーニングセットを使用して、優先順位のより高い分解能の区別を提供することができる。テキストクラシファイヤ1020、1120は、高優先順位であるテキストのグループ1047、1147、低優先順位であるテキストのグループ1084、1148、ならびに中優先順位であるテキストのグループ1150によってトレーニングされる。したがって、分析されるテキスト1036、1136は、クラシファイヤ1020、1120に入力され、クラシファイヤ1020、1120は、スカラ数1049、1149を出力し、スカラ数1049、1149によって、例えば、分析されるテキストが、高優先順位、中優先順位、または低優先順位である尤度を測定することができる。クラシファイヤ1120は、クラス1152も出力することができ、このクラス1152は、テキスト1136が含まれる可能性が最も高い、低優先順位、中優先順位、または高優先順位のクラスを示す。望まれる場合に、さらなるクラスを追加することもできる。
本発明は、優先順位の定義に制限されない。というのは、この用語が、電子メールメッセージなどのテキストに優先順位を割り当てるのに、クラシファイヤ1020、1120によって使用されるからである。優先順位は、例えば、損失関数に関して定義することができる。具体的に言うと、優先順位は、受信の後にテキストが再検討される際の遅れ時間あたりの損失の機会の期待されるコストに関して定義することができる。すなわち、テキストの遅れた処理に関して生じる期待される損失または期待されるコストである。損失関数は、さらに、受信されたテキストのタイプに従って変化させることができる。
例えば、一般的な事例を図12に示すが、図12は、テキストの優先順位に依存する線形コスト関数のグラフ1254である。グラフ1254では、時間が経つにつれて、テキストを再検討しないことのコストも増える。しかし、コストは、線1258によって示される中優先順位メッセージまたは線1260によって示される低優先順位メッセージと比較して、線1256によって示されるように、高優先順位メッセージについてより多く増加する。例えば、高優先順位線1256が、100の傾斜を有し、中優先順位線1258が、10の傾斜を有し、低優先順位線1260が、1の傾斜を有する場合がある。これらの傾斜の値は、例えば回帰分析によって、所与のテキストに優先順位を割り当てる際に、クラシファイヤ1020、1120によって使用することができる。
しかし、一部のメッセージは、線形コスト関数の使用によって、そのプロパティをよく近似されない。例えば、会議に関するメッセージは、会議の時刻が近づくにつれて増えるコスト関数を有し、その後、このコスト関数は、急激に減少する。すなわち、会議を逃した後に、一般に、ユーザがそれに関して行えることはさほどない。この状況は、図13に示された非線形コスト関数によって、よりよく近似される。グラフ1362では、コスト関数1364が、線1366によって画定される会議の時刻に達するまで急速に増加し、その後、急速に減少する。メッセージタイプに応じて、コスト関数を、線形および非線形の両方の、多数の異なる代表的なコスト関数の1つによって近似することができる。
したがって、説明したように、テキストの優先順位は、クラシファイヤの出力に基づく、それが複数の優先順位の1つである尤度とするか、やはりクラシファイヤの出力に基づく、そのテキストが適用される最もありそうな優先順位クラスとすることができる。その代わりに、電子メールメッセージなどのテキストの期待される時間クリティカル性を判定することができる。これは、次のように書くことができる。
Figure 0004896726
ここで、ELは、期待される損失であり、p(critical)は、テキストがクリティカル性iを有する確率であり、C(critical)は、テキストがクリティカル性iを有することに関するコスト関数であり、nは、クリティカル性クラスの総数から1を引いたものである。コスト関数は、説明したように、線形または非線形とすることができる。関数が線形である場合に、コスト関数は、時間に伴う損失の一定の割合を定義する。非線形関数の場合に、損失の割合は、テキストの遅れた再検討または処理に伴って変化し、遅れの量に応じて増減することができる。
n=1の場合に、2つの優先順位クラス、低および高だけがあることを指定すると、期待される損失を、次のように定式化し直すことができる。
EC=p(criticalhigh)C(criticalhigh)+[1−p(criticallow)]C(criticallow
ここで、ECは、テキストの期待されるクリティカル性である。さらに、低クリティカル性メッセージのコスト関数に0がセットされる場合に、この式は、
EC=p(criticalhigh)C(criticalhigh
になる。テキストの再検討の時までの総損失は、期待されるクリティカル性の積分すなわち
Figure 0004896726
として表すことができる。ここで、tは、文書を再検討する前の時間遅れである。
重要性によって、電子メールメッセージなどの文書をランキングする値メトリックと一致する他の尺度。上の議論は、時間クリティカル性として優先順位に焦点を合わせたが、「重要性」の他の概念もトレーニングすることができる。例えば、これは、トレーニングフォルダのセットに、「High Importance(高重要性)」から「Low Importance(低重要性)」までのラベルを付けることによって達成することができ、ここで、「期待される重要性」の尺度を判定することができる。もう1つのメトリックは、セマンティックラベル「messages that I would wish to hear about within 1 day while traveling(旅行中に1日以内に聞きたいメッセージ)」に基づくものとして、旅行中のユーザへの転送に関するメッセージの優先順位付けの尺度を判定することができる。さらに、使用されるメトリックの1つが、緊急性または時間クリティカル性である。というのは、これが、意思決定、選別、およびルーティングの明瞭なセマンティクスを有するからである。この場合に、クラスは、緊急性の異なるレベルに従ってラベルを付けられ、メッセージが各クラスに含まれることの推論された確率からの各メッセージの期待される緊急性として計算される。
前のセクションで説明した、クリティカル性に対する拡張も、本発明に従って提供することができる。例えば、分類に、特徴のクラスの中またはその間の高支払い(high−payoff)特徴の組合せの自動検索を含めることができる。例として、特殊な区別、構造などの、あるユーザに特に有用であることがわかっている単語との組合せを検索し、分類プロセスで使用することができる。2つの特徴の組合せを、ダブレット(doublet)と呼び、3つの特徴の組合せを、トリプレット(triplet)と呼ぶ。特徴の組合せは、改善された分類を可能にすることができる。
分類は、クラシファイヤで移動するウィンドウを使用する増分インデクシングの使用によって改善することもできる。これによって、古いデータがタイムアウトし、新しいデータが持ち込まれる際に、クラシファイヤを日常的にリフレッシュできるようになる。
分類は、メッセージで指定されるイベントの日時の判定に基づくものとすることもできる。この判定によって、クラシファイヤが使用できる特徴をメッセージに割り当てることができる。例えば、割り当てられる特徴に、本日4時間以内、本日8時間以内、翌日、今週、今月、および来月以降を含めることができる。これによって、クラシファイヤが、分類されるメッセージに関する改善された精度を有することが可能になる。一般に、分類は、イベントが将来か過去かを考慮して、参照されるイベントの時刻に基づくものとすることができる。したがって、将来のイベントに関して、分類で、イベントが発生する将来の時刻への送信者の言及を考慮する。
他の新しい特徴を、分類プロセスに統合することもできる。例えば、組織図を使用して、図での送信者の位置によってメッセージがどれほど重要であるかを判定することができる。言葉の特徴を、クラシファイヤに統合することができる。異なる言語に対処するために、出身者の生まれ、および/またはメッセージが書かれた言語に応じて特徴を変更することができる。分類は、メッセージが保管される異なるフォルダならびに他のスケーリングルールおよび制御ルールに応じて、変化させることができる。電子メールおよび他のソースの他に、分類を、インスタントメッセージと、株式ティッカなどの他の情報のソースに対して実行することができる。
一般に、送信者−受信者の構造的関係を、分類プロセスで考慮することができる。例えば、ユーザが、メッセージの実質的に唯一の受信者である場合に、このメッセージを、少数の人に送られるメッセージより重要と考えることができる。少数の人に送信されるメッセージは、ユーザにブラインドコピー(bcc)またはカーボンコピー(cc)されるメッセージより重要である可能性がある。送信者に関して、送信者の名前が認識されるかどうかに基づいてクリティカル性を割り当てることができる。クリティカル性は、送信者が、ユーザが関連する組織の内部または外部のどちらであるかに応じて割り当てることもできる。
分類で考慮できる他の区別に、メッセージの長さ、質問が検出されるかどうか、およびユーザの名前がメッセージに含まれるかどうかが含まれる。時間クリティカル性に関連する言葉によって、メッセージの重要性を高めることができる。例えば、「happening soon」、「right away」、「as soon as possible」、「ASAP」、および「deadline is」などの句によって、メッセージをよりクリティカルにすることができる。未来時制と比較した過去時制の使用ならびに「get together」、「can we meet」などの句によって指定される協力タスクを考慮することができる。ジャンクメールの証拠によって、メッセージの優先順位を下げることができる。組織図でユーザに隣接する送信者からの短い質問など、組合せを表す述部も、分類プロセスで考慮することができる。
この説明の次のセクションでは、高優先順位テキスト、例えば、ユーザ設定の閾値を超えるか決定論的推理によって判定される閾値を超える高い優先順位を有する可能性が高いテキストについて、ユーザに警告すべき場合の決定を提供するプロセスを説明する。すなわち、時間にクリティカルなメッセージについて知ることの他に、例えばユーザが直接に着信電子メールを見ていない場合に、時間にクリティカルなメッセージについてユーザに警告すべき場合を決定することも重要である。一般に、時間にクリティカルなメッセージについて知るために、現在取り組まれている仕事からユーザの気をそらすことのコストを判定する。
代替案では、警告および通知に関する様々なポリシを使用することができる。これらのポリシは、例えば下で詳細に説明する、通知プラットフォームアーキテクチャ内で実施することができる。このポリシの一部に、次が含まれる。
・ 総損失に関するユーザ指定の上限の設定。このポリシは、メッセージの遅れた再検討に関連する総損失が、事前に指定された「許容可能な」損失「x」を超える場合に、システムが警告を生成しなければならないことを指定する。
・ もう1つのポリシは、NEVA=EVTA−ECA−TCなどのより複雑な決定論的分析に基づく費用便益分析とすることができ、ここで、NEVAは、警告の正味の期待される価値、EVTAは、警告の期待される価値、ECAは、警告の期待されるコスト、TCは、メッセージの通信に関連する伝送コストである。
一般に、時刻tにメッセージを再検討しない場合にユーザがこうむる期待される損失が、ユーザに警告することの期待されるコストより大きいことが費用便益分析から示される場合に、ユーザに警告しなければならない。すなわち、
EL−EC>0
の場合に警告を行わなければならず、ここで、ELは、現在時刻tにテキストを再検討しないことの期待される損失であり、ECは、現在時刻tにテキストについてユーザに警告することの期待されるコストである。期待される損失は、この説明の前のセクションで説明した。
しかし、ユーザが、しばしば、将来に自分でメッセージを再検討するので、上の定式化は最も正確とはいえない。したがって、実際上、ユーザは、一般に、EVTAと称する警告の期待される価値が正である場合に警告されなければならない。したがって、警告の期待される価値は、ユーザが後に警告なしで自分でメッセージを再検討することの価値に対立するものとしての、今、テキストについてユーザに警告することの価値から警告のコストを引いたものを検討しなければならない。これは、
EVA=ELalert−ELno−alert−EC
を表すことができ、ここで、ELalertは、ELno−alertに対立するものとしての、警告された時にユーザがメッセージを今再検討する場合のユーザがメッセージを再検討することの期待される損失であり、ELno−alertは、警告されずに、ある時点でユーザが自分でメッセージを再検討することの期待される損失であり、ECは、気をそらすことの考慮および情報を伝送することの直接のコストに基づく警告の期待されるコストである。
さらに、複数のメッセージからの情報を、一緒に、単一の複合警告にグループ化することができる。1つの警告で複数のメッセージに関する情報を再検討することは、単一のメッセージに関する情報を中継する警告よりコストが高い可能性がある。そのような気をそらすことの増加は、警告のコストを、その情報の複雑さの関数にすることによって表すことができる。電子メールメッセージのEVAが、他の電子メールメッセージのEVAと独立であると仮定することができる。例えば、EVA(M,t)は、時刻tに単一のメッセージMに関してユーザに警告することの価値を指し、ECA(n)は、n個のメッセージの内容を中継することの期待されるコストを指す。したがって、n個のメッセージのセットに関する情報を中継することの期待される価値を一緒に合計することによって、複数のメッセージを検討することができる。ここで、
Figure 0004896726
である。
警告の期待されるコストを判定するために、ユーザが存在するか否かに関する情報を推論するか、これに直接にアクセスすることが有用である。赤外線センサおよび圧力センサなど、ユーザがオフィスいる場合を示すセンサを使用することができる。しかし、そのようなデバイスが使用可能でない場合に、ユーザがオフィスにいる確率を、例えば最後に観察されたマウスまたはキーボードのアクティビティからの時間など、コンピュータでのユーザアクティビティの関数として割り当てることができる。さらに、カレンダで使用可能なスケジューリング情報を使用して、ユーザの距離および配置に関する推論を行い、異なるプロセスによってユーザにメッセージを転送するコストを考慮することもできる。
高い時間クリティカル性を有するメッセージに関する情報によってユーザに割り込むことに関する判断を行う際に、ユーザがどれほど忙しいかを知ることも重要である。これは、ユーザがコンピュータで作業しているかどうか、およびその割合、またはユーザが電話をかけているか、誰かと話しているか、別の位置の会議に出席しているかどうかに関して推理することができる(例えば、推論的意思決定)。図14に示されているように、複数のクラスの証拠を使用して、ユーザのアクティビティまたは注意のフォーカスを査定することができる。次に、ベイジアンネットワークを使用して、ユーザのアクティビティに関する推論を実行することができる。そのようなネットワークの例を、図15に示す。
一般に、いつどのようにメッセージについてユーザに警告し、サービスを提供するかに関する判断を、期待されるクリティカル性およびユーザアクティビティの推論に基づいて行わなければならない。判断は、例えば判断モデルを使用することによって実行することができる。図16から図18は、警告判断を行うのにそのような判断モデルをどのように使用できるかを示す、影響の図である。図16に、現在のアクティビティ、メッセージの期待される時間クリティカル性、および通信モーダリティに依存する警告のコストを考慮する、ユーザに割り込むことに関する判断のための判断モデルを示す。図17には、現在位置を表す変数と、アクティビティに対するその変数の影響と、代替メッセージング技法のコストも含まれる。さらに、図18は、かなりのグラフィックス内容を有するメッセージが、グラフィックス内容を提示せずにユーザに転送される場合の忠実度の損失に関連するコストを考慮するために拡張されている。
代替案では、いつどのようにユーザに警告するかに関する判断を、警告に関するポリシを定義するユーザ指定の閾値およびパラメータのセットを使用することによって行うことができる。ユーザの存在は、例えばマウスまたはキーボードのアクティビティに基づいて推論することができる。したがって、ユーザは、例えば、アクティビティおよび非アクティビティの推論された状態に関する警告の閾値を入力することをイネーブルされることができる。ユーザは、警告がより低いクリティカル性で発生する場合の、アクティビティに続くアイドルアクティビティの量も入力することができる。実質的にコンピュータアクティビティが検出されない時間に基づいてユーザがいないと判定される場合に、メッセージを保管することができ、メッセージは、ユーザがコンピュータと対話するために戻ってきた場合に、クリティカル性の順番でユーザに報告される。さらに、ユーザは、期待されるクリティカル性、最大の期待される損失、およびユーザに警告することの価値を含む量の関数として、ルーティングオプションおよびページングオプションを指定することができる。
通知および/または警告システムは、ユーザが戻ると期待される前に重要と期待される優先順位を送信するために、ユーザが戻ると期待される時を推定することもできる。これは、経時的な、ユーザの存在および不在のパターンを学習することによって達成することができる。次に、ユーザは、そのユーザがシステムに戻ると期待される時に関する適当なポリシをセットして、警告されずに優先順位を再検討することができる。システムによる戻ると期待される時の判定は、例えば、非常に緊急のメッセージの送信者に自動的に伝達することができる。この形で、メッセージ送信者は、いつユーザが戻り、メッセージに応答できるかのフィードバックを受け取る。送信者に、その送信者のメッセージがユーザのモバイルデバイスなどに伝達されたことを知らせることもできる。
図19に、本発明の態様による、優先順位の生成および優先順位に基づく警告判断の実行の方法論を示す。説明を単純にするために、この方法論を、一連の動作として図示し、説明するが、本発明によれば、一部の動作を、図示し、本明細書で説明するものと異なる順序でおよび/または他の動作と同時に実行できるので、本発明が、動作の順序によって制限されないことを理解し、諒解されたい。例えば、当業者は、この方法論を、その代わりに、状態図でなど、一連の相互に関係する状態またはイベントとして表現できることを理解し、諒解するであろう。さらに、示された動作のいずれかが、本発明による方法論の実施に必要ではない可能性がある。
図19を参照すると、流れ図1974に、本発明に従って優先順位が生成され、使用される方法論が示されている。1980で、優先順位を割り当てられるテキストなどのデータを受け取る。このデータは、電子メールメッセージあるいは実質的にすべての他のタイプのデータまたはテキストとすることができる。1982で、上で説明したように、クラシファイヤに基づいて、データの優先順位を生成する。さらに、1982に、上で説明した、クラシファイヤの初期トレーニングおよび後続トレーニングを含めることができる。
1984で、データの優先順位を出力する。図19からわかるように、これには、1986、1988、1990、1992、および1994での処理を含めることができる。1986で、現在時刻tにデータを再検討しないことの期待される損失を判定する。この判定では、上で説明したように、ユーザが、警告されずに、自分でテキストを再検討するという前提に基づいて、将来の時のテキストを検討しないことの期待される損失を考慮する。1988で、やはり上で説明したように、警告することの期待されるコストを判定する。1990で、損失がコストより大きい場合に、1992で、時刻tに警告を行わず、処理は、新しい現在時刻tで、1986に戻る。1986に戻る処理は、時間が進行した時に、1990での計算が変化し得るなど、期待される損失が、ある時点で警告コストを上回る可能性があるので、実行することができる。期待される損失が警告コストを超える時には、1994で、ユーザまたは他のシステムへの警告を実行する。
ユーザまたは他のシステムへの警告の出力を、これから説明する。ユーザは、警告判断基準に基づいて電子デバイスで警告を受けることができ、この警告判断基準は、優先順位付きのテキストについてユーザが警告されなければならない場合を示す。ユーザが警告される電子デバイスは、ポケットベル、セル/デジタル携帯電話機、または下で詳細に説明する他の通信モーダリティとすることができる。ポケットベルまたは携帯電話機などの電子デバイスでのユーザへの警告は、例えばユーザの位置、推論された作業、および/または注意のフォーカスに関する情報に敏感になるように適合させることができる警告判断基準に基づくものとすることができる。そのような情報は、不確実性の下で推論することができ、あるいは、オンライン情報ソースからアクセスすることができる。例えば、オンラインカレンダからの情報を適合させて、使用される判断基準を制御して、下で詳細に説明する通知シンクなどのデバイスへの情報中継に関する判断を行うことができる。
優先順位付きのテキストまたは他のデータを、ルーティング判断基準に基づいてルーティングすることによって、警告を実行することができる。テキストのルーティングに、テキストの転送、および/またはテキストが電子メールである場合のテキストの送信者への返答を含めることができる。例えば、優先順位付きの文書についてユーザに警告するために、サウンドを再生することができる。代替案では、エージェントまたは自動化されたアシスタントを開くことができる(例えば、対話型ディスプレイウィザード)。すなわち、エージェントをディスプレイスクリーンに表示して、優先順位付き文書についてユーザに通知することができる。さらに、スクリーンに表示するなど、優先順位付き文書を開くことができる。文書は、フォーカスを受け取ることができる。これに、文書の優先順位が高いほど、大きいウィンドウに表示されるなど、優先順位に基づいて文書のサイズを変更すること、および/または優先順位に基づいてディスプレイで文書を中央に配置することを含めることもできる。
図20すなわち、本発明の態様によるテキスト生成および優先順位システム2000の図を参照する。システム2000に、プログラム2002およびクラシファイヤ2004が含まれる。プログラム2002およびクラシファイヤ2004に、コンピュータのプロセッサによって、そのコンピュータのコンピュータ可読メディアから実行されるコンピュータプログラムを含めることができることに留意されたい。
プログラム2002は、クラシファイヤ2004に入力されるテキストを生成する。このプログラムには、テキストとして働く電子メールを受信する電子メールプログラムが含まれる。クラシファイヤ2004は、関連するメッセージの優先順位を生成する。上で説明したように、クラシファイヤ2004は、ベイジアンクラシファイヤ、サポートベクトルマシンクラシファイヤ、または他のタイプのクラシファイヤとすることができる。クラシファイヤ2004によって出力されるテキストの優先順位を、上で説明した費用便益分析と共に使用して、さらなる出力および/またはそれに基づく警告をもたらすことができる。
図21を見ると、本発明の態様によるプリファレンス実行エンジンとコンテキストアナライザが一緒にどのように機能するかが示されている。システム2100に、コンテキストアナライザ2122、プリファレンス実行エンジン2124、1つまたは複数のイベントまたは通知のソース1からN、2126、2127、2128、通知ソースとして動作できる優先順位システム2130、および1つまたは複数のアクションまたは通知のシンク1からM、2136、2137、2138が含まれ、NおよびMは、それぞれ整数である。本発明の態様によれば、ソースを、イベントパブリッシャとも呼ぶことができ、シンクを、イベントサブスクライバと呼ぶこともできる。任意の個数のシンクおよびソースを設けることができる。一般に、実行エンジン2124は、コンテキストアナライザ2122に保管され、および/またはこれによってアクセスされるパラメトリック情報に部分的に基づいて、ソース2126〜2128からシンク2136〜2138に、イベントまたは警告とも称する通知を伝達する。
コンテキストアナライザ2122は、通知判断に影響する、ユーザの変数およびパラメータに関する情報を保管/分析する。例えば、パラメータに、ユーザの通常の位置および注意のフォーカスまたは時刻および曜日ごとのアクティビティなどのコンテキスト情報と、ユーザが異なる位置でアクセスできる傾向があるデバイスなどの、そのようなパラメータに対して条件付けられる追加パラメータを含めることができる。そのようなパラメータは、1つまたは複数のセンサを介して自律的に行われる観察の関数とすることもできる。例えば、全世界測位システム(GPS)サブシステムによって提供できるユーザの位置に関する情報、使用されるデバイスのタイプおよび/またはデバイスの使用のパターンに関する情報、および特定のタイプのデバイスがユーザによって最後にアクセスされた時刻に基づいて、1つまたは複数のプロファイル(図示せず)を選択するか変更することができる。さらに、下で詳細に説明するように、自動化された推論を使用して、位置および注意などのパラメータまたは状態を動的に推論することもできる。プロファイルパラメータは、ユーザが編集できるユーザプロファイルとして保管することができる。事前定義のプロファイルのセットまたは動的推論に頼る他に、この通知アーキテクチャは、例えば次の「x」時間の間または所与の時刻まで、ユーザが重要な通知を除いて応えることができないなど、ユーザのリアルタイムの状態をユーザが指定できるようにすることができる。
パラメータに、異なるセッティングで異なるタイプの通知によって邪魔されることに関するユーザのプリファレンスに関するデフォルト通知プリファレンスパラメータも含めることができ、これは、実行エンジン2124が通知判断をそこから行い、ユーザがそれに対する変更を開始できる基礎として使用することができる。パラメータに、ユーザが異なる情況でどのように通知されることを望むか(例えば、セル電話による、ポケットベルによる)に関するデフォルトパラメータを含めることができる。パラメータに、異なるセッティングで異なるモードによって通知されることに関連する中断のコストなどの査定を含めることができる。これに、ユーザが異なる位置にいる尤度、異なるデバイスが使用可能である尤度、および所与の時のユーザの注意状況の尤度を示すコンテテキストパラメータならびにユーザが所与の時にどのように通知されることを望むかを示す通知パラメータを含めることができる。
本発明の一態様に従ってコンテキストアナライザ2122によって保管される情報は、アナライザによって判定されるコンテキスト情報を含む。コンテキスト情報は、この説明の後のセクションで詳細に説明するように、1つまたは複数のコンテキスト情報ソース(図示せず)に基づいてユーザの位置および注意状況を識別することによって、アナライザ2122によって判定される。コンテキストアナライザ2122は、例えば、ユーザの自動車またはセル電話機の一部である全世界測位システム(GPS)を介して、ユーザの実際位置を正確に判定することができる場合がある。アナライザは、統計モデルを使用して、その日のタイプ、時刻、ユーザのカレンダのデータ、およびユーザのアクティビティに関する観察などの情報の考慮を介して収集されるバックグラウンド査定および/または観察を考慮することによって、ユーザが注意の所与の状態である尤度を判定することもできる。注意の所与の状態に、ユーザが通知を自由に受け取ることができるか、忙しく、通知を受け取ることができないかを含めることができ、ウィークデイ、週末、祝日、および/または他の時/期間などの他の考慮事項を含めることができる。
ソース2126〜2128および2130は、ユーザおよび/または他のエンティティのための通知を生成する。例えば、ソース2126〜2128に、インターネットおよびネットワークベースの通信、電話通信などの通信ならびにソフトウェアサービスを含めることができる。通知ソースは、一般に、本明細書では、情報、サービス、および/またはシステムあるいは世界イベントについてユーザまたはユーザのプロキシに警告することを意図された、通知または警告と呼ぶこともできるイベントを生成するものとして定義される。通知ソースを、イベントソースと呼ぶこともできる。
例えば、優先順位を付けられるように、優先順位システム2130によって通知として電子メールを生成することができ、ここで、通知を生成するアプリケーションプログラムまたはシステムは、ユーザに対する電子メールのありそうな重要性または緊急性に対応する相対優先順位を電子メールに割り当てる。電子メールを、ユーザに対する相対的な重要性に関わりなく送信することもできる。インターネット関連サービスに、例えば、時々の現在のニュースの見出しおよび株式市況など、ユーザがサブスクライブした情報を含む通知を含めることができる。
通知またはイベントのソース2126〜2128自体は、プッシュタイプのソースまたはプルタイプのソースとすることができる。プッシュタイプのソースは、サブスクライブの後に情報を自動的に送信する、見出しニュースまたは他のインターネット関連サービスなど、対応する要求なしで自動的に情報を生成し、送信するソースである。プルタイプのソースは、メールサーバがポーリングされた後に受け取られる電子メールなど、要求に応答して情報を送信するソースである。別の通知ソースに、次が含まれる。
・ カレンダシステムなどの電子メールデスクトップアプリケーション
・ コンピュータシステム(例えば、システムアクティビティまたは問題に関する警告に関する情報であるメッセージによってユーザに警告することができる)
・ インターネット関連のサービス、予約情報、スケジューリング照会
・ 1つまたは複数の共有フォルダ内の文書の変化またはある種類の文書の数の変化
・ 情報に関する持続的な照会に応答する新しい文書の使用可能性、および/または
・ 人およびそのプレゼンス、位置の変化、近接(例えば、私が移動している場合に別の同僚または友人が16km(10マイル)以内にいる場合に知らせる)、または求めに応じられること(例えば、Steveが、会話に応えられるか、フルビデオテレビ会議をサポートできる高速リンクの近くにいる場合に知らせる)に関する情報の情報ソース。
通知アクションシンク2136〜2138は、ユーザに通知を供給することができる。例えば、そのような通知アクションシンク2136〜2138に、デスクトップ機および/またはラップトップ機などのコンピュータ、ハンドヘルドコンピュータ、セル電話機、陸線電話機、ポケットベル、自動車ベースのコンピュータ、ならびに諒解できる他のシステム/アプリケーションを含めることができる。シンク2136〜2138の一部が、他のシンクより豊かに通知を伝達できることに留意されたい。例えば、デスクトップコンピュータは、通常は、スピーカおよび比較的大きいカラーディスプレイを結合され、ローカルネットワークまたはインターネットに結合される場合に情報を受け取るための高い帯域幅を有する。したがって、デスクトップコンピュータによって、比較的豊富な形でユーザに通知を伝達することができる。逆に、例えば、多くのセル電話機は、白黒である可能性がある、より小さいディスプレイを有し、比較的少ない帯域幅で情報を受信する。それに対応して、セル電話機によって伝達される通知に関連する情報を、例えば、より短く生成し、電話のインターフェース能力に合わせることができる。したがって、通知の内容は、セル電話機またはデスクトップコンピュータのどちらに送信されるかに応じて異なるものとすることができる。本発明の一態様によれば、通知シンクは、例えばイベントまたは通知への、イベントサブスクリプションサービスを介して、それがサブスクライブするものを参照することができる。
実行エンジン2124は、コンテキストアナライザによって保管され、および/または判定された情報にアクセスし、ソース2126〜2128から受け取った通知のどれをどのシンク2136〜2138に伝達するかを決定する。さらに、エンジン2124は、情報を送るためにどのシンク2136〜2138が選択されたかに応じて、通知をどのように伝達するかを決定することができる。例えば、選択されたシンク2136〜2138に供給する前に通知を要約しなければならないと決定することができる。
本発明は、どの通知をどの通知シンクに伝達するかおよび通知を伝達する形に関してエンジン2124がどのように判断するかに制限されない。一態様によれば、決定論的分析を使用することができる。例えば、ユーザの位置、注意、デバイス可用性、および警告がない場合にユーザが情報にアクセスするまでの時間の長さを含む変数に関する重要な不確実性を推論するように、実行エンジン2124を適合させることができる。実行エンジン2124は、通知についてユーザに警告するかどうかに関する通知判断を行うことができ、そうする場合に、要約の性質および通知の中継に使用される適当なデバイスに関する通知判断を行うことができる。一般に、実行エンジン2124は、通知の正味の期待される価値を判定する。それを行う際に、実行エンジンは、次を検討することができる。
・ 各使用可能な通知シンクの忠実度および伝送信頼性
・ ユーザの気をそらすことの注意コスト
・ ユーザにとっての情報の新規性
・ ユーザが自分でこの情報を再検討するまでの時間
・ 情報の潜在的にコンテキスト依存の価値、および/または
・ 通知に含まれる情報の経時的な価値の増減
したがって、不確実性に関して行われる推論は、例えば、ユーザのある注意状態に対する特定のデバイスの特定のモードの使用に伴う、ユーザの中断のコストなどの価値の期待される尤度として生成することができる。実行エンジン2124は、次のうちの1つまたは複数に関する判断を行うことができる。
・ ユーザが現在注意を払い、行っていること(例えば、コンテキスト情報に基づいて)
・ ユーザ現在どこにいるか
・ その情報がどれほど重要であるか
・ 通知を遅らせることのコストはどれほどか
・ その通知がどれほど気をそらせるか
・ ユーザに達する尤度はどれほどか
・ 所与の通知シンクの特定のモードの使用に関連する忠実度の損失はどれほどか
したがって、実行エンジン2124は、保留中のアクティブな通知の、決定論的分析などの分析を実行し、情報シンクおよび情報ソースによって提供されるコンテキスト依存の変数を評価し、ユーザが情報を再検討する可能性が高くなるまでの時間と、ユーザの位置および現在の注意状態などの選択された不確実性を推論することができる。
さらに、実行エンジン2124は、パーソナライズされた決定論的分析の代わりにまたはこれをサポートするために、コンテキストアナライザ2122によってユーザプロファイルに保管された情報にアクセスすることができる。例えば、ユーザプロファイルは、所与の時に、ユーザがポケットベルを介して通知されることを好み、通知が所定の重要性レベルを有する場合に限ることを示すことができる。そのような情報は、決定論的分析を開始するベースラインとして使用することができ、あるいは、ユーザに通知するかどうかおよびユーザにどのように通知するかを実行エンジン2124が判定する形とすることができる。
本発明の一態様によれば、通知プラットフォームアーキテクチャ2100は、イベントインフラストラクチャまたはメッセージングインフラストラクチャに常駐するレイヤとして構成することができる。しかし、本発明は、特定のイベンティングインフラストラクチャに制限されない。そのようなイベンティングおよびメッセージングのシステムおよびプロトコルに、次を含めることができる。
・ HyperText Transport Protocol(HTTP)、または当技術分野で既知のHTTP拡張
・ 当技術分野で既知のSimple Object Access Protocol(SOAP)
・ 当技術分野で既知のWindows(登録商標) Management Instrumentation(WMI)
・ 当技術分野で既知のJini
・ 例えばパケット交換プロトコルに基づくものなど、事実上すべてのタイプの通信プロトコル
さらに、当業者が諒解できるように、このアーキテクチャは、柔軟な分散計算インフラストラクチャに常駐するレイヤとして構成することができる。したがって、通知プラットフォームアーキテクチャ2100は、例えば、ソースが通知、警告、およびイベントを送信する形として、およびシンクが通知、警告、およびイベントを受信する形として、基礎になるインフラストラクチャを使用することができる。しかし、本発明は、これに制限されない。
図22を参照すると、この説明の前のセクションで説明した情報エージェントシステムアーキテクチャのコンテキストアナライザ2122が、システム2200内で、より詳細に示されている。図22に示されたコンテキストアナライザ2222に、ユーザ通知プリファレンスストア2240と、ユーザコンテキストプロファイルストア2262およびホワイトボード2264を含むユーザコンテキストモジュール2260が含まれる。本発明の一態様によるコンテキストアナライザ2222は、コンピュータのプロセッサによって、メモリを含むがこれに制限されないそのコンピュータの機械可読媒体から実行可能な1つまたは複数のコンピュータプログラムとして実施することができる。
プロファイルストア2262は、例えばユーザが編集し、変更することができるユーザプロファイルなど、ユーザのデフォルト通知プリファレンスなどのユーザの通知パラメータを保管する。プロファイルストア2262は、ユーザがどのように通知されるかに影響するパラメータに関する情報を保管するものと見なすことができる。本明細書で説明したように、プリファレンスは、ユーザが図式化されたロジックを使用することによって、例えばIF−THENフォーマットで、指定することができる。ユーザコンテキストモジュール2260は、例えばホワイトボード2264にパブリッシュされる1つまたは複数のコンテキスト情報ソース2280に基づいて、ユーザの現在のコンテキストを判定する。ユーザコンテキストプロファイルストア2262は、ユーザが編集し変更することができる、ユーザのデフォルトコンテキストセッティングなどのユーザに関するコンテキストパラメータを保管する。すなわち、ユーザコンテキストモジュール2260は、プロファイルストア2262からの情報にアクセスし、および/または1つまたは複数のコンテキスト情報ソース2280を介してライブセンシングを用いてストア2262内の信念の前の組を更新することによって、ユーザの現在のコンテキスト情報に関する最良の推測または推定を提供する。プロファイルストア2262は、例えばユーザがどこにおり、何をしているかを先験的に保管するものと見なすことができる。
ユーザコンテキストプロファイルストア2262は、決定論的プロファイルまたは確率的プロファイルなどの情報を取り込む事前に査定され、および/または事前に定義されたユーザプロファイルとすることができる。プロファイルは、通常の位置、アクティビティ、デバイス可用性、ならびに、時刻、日のタイプ、および1つまたは複数のデバイスとのユーザ対話などの観察の関数としての異なるクラスの通知のコストおよび価値とすることができる。日のタイプに、例えばウィークデイ、週末、および祝日を含めることができる。ユーザコンテキストモジュール2260は、ユーザの現在または将来の位置および注意状態などのユーザのコンテキストまたは状態の諸態様を能動的に判定または推論することができる。さらに、コンテキストの実際の状態を、ホワイトボード2264を介してコンテキスト情報ソース2280から直接にアクセスすることができ、および/または下で詳細に説明するように、ベイジアン推理などの推論方法を介して、様々な観察から推論することができる。
コンテキスト情報ソース2280は、ユーザの注意状態および位置に関する情報をホワイトボード2264を介してユーザコンテキストモジュール2260に供給することができ、この情報から、モジュール2260は、ユーザの現在のコンテキスト(例えば、ユーザの現在の注意状態および位置)に関する判定を行うことができる。さらに、本発明は、コンテキスト情報ソース2280の特定の個数またはタイプに制限されず、ユーザコンテキストモジュール2260によって推論またはアクセスされる情報のタイプに制限されない。しかし、コンテキストソース2280に、例えば、マウス情報、キーボード情報、アプリケーション情報(例えば、どのアプリケーションが現在ユーザのフォーカスを受け取っているか)、環境音および発言情報、デスクトップのウィンドウ内のテキスト情報などの複数のデスクトップ情報およびイベントを含めることができる。ホワイトボード2264に、共通ストレージ領域を含めることができ、これに対して、コンテキスト情報ソース2280が、情報をパブリッシュでき、これから、ソースおよびコンテキストモジュール2260を含む複数のコンポーネントが、この情報にアクセスすることができる。通知または警告とも称するイベントまたはアクションに、一般に、世界の1つまたは複数の状態に関する観察に関する情報を含めることができる。そのような状態に、システムコンポーネントの状況、ユーザのアクティビティ、および/または環境に関する測定を含めることができる。さらに、測定デバイスおよび/またはイベントのソースの能動的ポーリングによって、支払いに対して送信される情報の受け取りによって、および/または一定のまたは可変のイベントハートビートごとに、イベントを生成することができる。
他のタイプのコンテキストソース2280に、ユーザの個人情報マネージャ(PIM)情報が含まれ、これは、一般に、例えばユーザのスケジュールに関するスケジューリング情報を提供することができる。現在時刻ならびにユーザの位置(例えば、全世界測位システム(GPS)および/または位置を判定できるセル電話機、PDA、またはラップトップ機のユーザによるアクセスによって判定される)も、コンテキストソース2280のタイプである。さらに、リアルタイムモバイルデバイス使用が、コンテキストソース2280の1タイプである。例えば、セル電話機などのモバイルデバイスは、それが現在ユーザによってアクセスされつつあるかどうか、ならびにデバイスの方位および傾き(例えば、やはりデバイス使用に関する情報を示す)と加速および速度(例えば、ユーザが移動しつつあるか否かに関する情報を示す)を判定できる場合がある。
図23を参照すると、上で説明した通知ソースが詳細に示されている。通知ソース2326〜2328は、一般に、通知実行エンジン2324に伝達される通知を生成し、通知実行エンジン2324は、通知を行うべき場合を判定し、そうである場合に、その通知を通知シンク2336〜2338のどれにどの順序で伝達すべきかを判定する。
本発明の一態様によれば、通知ソース2326〜2328は、本明細書で通知ソーススキーマまたはソーススキーマと称する、属性および関係の標準的な記述内で、次のパラメータのうちの1つまたは複数を有することができる。スキーマは、上で説明したように、ソースについて、シンクについて、およびコンテキスト情報ソースについて設けることができることに留意されたい。そのようなスキーマは、異なるコンポーネントに関する宣言的情報を提供し、ソース2326〜2328、通知エンジン2324、シンク2336〜2338、およびコンテキストアナライザが、互いにセマンティック情報を共有することを可能にする。したがって、異なるスキーマは、通知に関連する性質、緊急性、およびデバイスシグナリングモーダリティに関する情報を提供する。すなわち、スキーマは、一般に、例えば、クラスと、イベントまたは通知のクラス、ソース、ターゲット、イベントまたは通知のセマンティックス、オントロジ的内容情報、観察信頼性、および実質的にすべてのサービス品質属性を含む情報を含む通知およびイベントの構造を定義するクラスの間の関係との集合として定義することができる。
通知ソーススキーマのパラメータ(図示せず)に、メッセージクラス;関連性;重要性;時間クリティカル性;新規性;内容属性;忠実度トレードオフ、および/またはソース情報サマリ情報のうちの1つまたは複数を含めることができる。通知ソースによって生成される通知のメッセージクラスは、例えば、電子メール、インスタントメッセージ、数値金融更新、およびデスクトップサービスなどの通知の通信のタイプを示す。通知ソースによって生成される通知の関連性は、その通知に含まれる情報が、1つまたは複数の指定されたコンテキストに関連する尤度を示す。例えば、関連性は、ソースが所与のコンテキストに関連するか否かを示す論理フラグによって提供することができる。通知の新規性は、ユーザが通知に含まれる情報を既に知っている尤度を示す。すなわち、新規性は、経時的に、情報がユーザにとって新しいかどうかである(ユーザがその情報を知っているかどうかと、それについて警告されずに、将来、いつその情報を知るかを示す)。
通知に関連する忠実度トレードオフは、例えば、指定された許容される切り捨ておよび/または要約の異なる形から生じる可能性がある通知内の情報の価値の損失を示す。そのような切り捨ておよび/または要約は、最初に生成された通知全体をシンクが受け取ることを阻む帯域幅制限および/または他の制限を有する可能性があるタイプの通知シンク2336〜2338に通知を伝達するために必要になる場合がある。一般に、忠実度は、通知に関連するオリジナル内容の性質および/または完全さの度合を指す。例えば、長い電子メールメッセージは、切り捨てられるか、セル電話機によって許容される最大100文字までに要約され、忠実度の損失をこうむる場合がある。同様に、テキストおよびグラフィックスの内容を含むオリジナルメッセージが、テキスト機能だけを有するデバイスを介して送信される場合に、忠実度の損失を被る。さらに、デバイスが、ソースから入手可能な解像度全体の一部を示すことだけができる場合がある。忠実度トレードオフは、順序付け(例えば、まずグラフィックス、次にサウンドの順番でのレンダリングの重要性)および/または忠実度の変化に伴って通知の内容の総価値がどれほど減るかを示すコスト関数のいずれかに関して述べられたソースの忠実度プリファレンスのセットを指す。例えば、忠実度トレードオフは、完全な電子メールメッセージの送信に関連する価値全体が、切り捨ての量が増えるにつれてどのように変化するかを記述することができる。内容属性は、例えば、内容の性質の要約を含めることができ、コアメッセージにテキストコンポーネント、グラフィックスコンポーネント、およびオーディオコンポーネントが含まれるかどうかに関する情報などを表す。内容自体は、通知のメッセージ内容を構成する実際のグラフィックス、テキスト、および/またはオーディオである。
通知の重要性は、情報が現在のコンテキストに関連すると仮定して、ユーザにとっての、通知に含まれる情報の価値を指す。例えば、重要性は、ユーザにとっての情報の価値のドル額として表すことができる。時間クリティカル性は、通知に含まれる情報の、時間依存の価値の変化すなわち、情報の価値が経時的にどのように変化するかを示す。すべてではないがほとんどの場合に、通知の情報の価値は、時間に伴って減少する。これを、図24に示す。グラフ2400に、経時的にマッピングされた通知の有用性を示す。最初の時を表すグラフの点2402で、通知の重要性が示されるが、曲線2404は、経時的な有用性の減少を示す。
図23に戻って、異なる通知ソースまたはソースタイプのデフォルト属性およびスキーマテンプレートは、図22のストア2240などのユーザ通知プリファレンスストアに保管された通知ソースプロファイルで使用可能にすることができる。そのようなデフォルトテンプレートに、通知ソースによって提供される値をオーバーライドするか、ソースによって提供されるスキーマに欠けている場合に属性を提供するように指示することができる。ソースサマリ情報は、ソースが、ソースから使用可能な情報の状況の全般的なサマリおよび潜在的な通知をポストすることを可能にする。例えば、メッセージングソースからのソースサマリ情報に、少なくともある優先順位を有する未読メッセージの総数、ユーザと通信しようとする人による試みの状況、および/または他のサマリ情報に関する情報を含めることができる。
通知シンク2336〜2338は、ユーザまたは他のエンティティが通知に含まれる情報について通知を受けることができる事実上すべてのデバイスまたはアプリケーションとすることができる。特定の通知を伝達するのにどのシンクを使用するかに関する選択は、通知エンジン2324によって決定される。
通知シンク2336〜2338は、スキーマ内で提供される次のパラメータのうちの1つまたは複数を有することができる。このパラメータには、例えば、デバイスクラス;シグナリング(警告)のモード;および、関連するモードについて、忠実度/レンダリング能力、伝送信頼性、通信の実際のコスト、および/または中断の注意コストを含めることができる。警告属性のパラメータ化された制御に適合されたデバイスについて、そのデバイスのスキーマに、さらに、警告属性およびその属性を制御するためのパラメータの記述と、警告属性の異なるセッティングに伴って他の属性(例えば、伝送信頼性、配布のコスト)がそれによって変化する関数を含めることができる。通知シンクのスキーマは、通知デバイスがその性質および機能に関するセマンティック情報を通知実行エンジン2324および/またはシステムの他のコンポーネントと通信する形を提供する。異なるデバイスタイプのデフォルトの属性およびスキーマテンプレートは、前のセクションで説明した図22のストア2240など、ユーザ通知プリファレンスストアに保管されたデバイスプロファイルで使用可能にすることができる。そのようなデフォルトテンプレートは、デバイスによって提供される値をオーバーライドするか、そのようなデバイスによって提供されるスキーマに欠けている場合に属性を提供するように指示することができる。
スキーマパラメータのそれぞれを、これから順番に説明する。デバイスのクラスは、例えば、セル電話機、デスクトップコンピュータ、およびラップトップコンピュータなど、デバイスのタイプを指す。クラスは、モバイルデバイスまたは固定デバイスなど、より一般的なものとすることもできる。シグナリングのモードは、所与のデバイスが通知についてユーザに警告できる形を指す。デバイスは、1つまたは複数の通知モードを有することができる。例えば、セル電話機は、振動のみ、あるボリュームのベルのみ、および/または振動とベルの両方を行うことができる。さらに、警告システム用のデスクトップディスプレイは、複数の別個のモードに分解することができる(例えば、ディスプレイの右上の小さい通知ウィンドウ対スクリーン最上部の小さいサムネイル(オーディオ告知ありまたはオーディオ告知なし))。事前定義の挙動のセットに制限される他に、デバイスは、デバイス定義の一部として、パラメータの関数である警告属性を有するモードをイネーブルすることができる。あるモードのそのような連続的警告パラメータは、例えば、警告がデスクトップに表示されるボリューム、セル電話機のベル、警告ウィンドウのサイズなどのコントロールを表す。
通知シンク2336〜2338のモードの伝送信頼性は、そのモードを用いてそのシンクを介してユーザに伝達される通知に関する通信される警告をユーザが受け取る尤度を示す。伝送信頼性は、デバイス可用性およびユーザのコンテキストに依存する可能性があり、あるデバイスの異なるモードの伝送信頼性は、ユーザの位置および注意などのコンテキスト的属性によって条件付けることができる。属性の抽象化として作成される分離として定義される(例えば、家庭から離れたすべての位置について、午後8時から正午までの時間期間で)独自の位置および独自の注意状態などの属性のクロス乗積によって定義される1つまたは複数の独自のコンテキスト的状態の伝送信頼性も、指定することができる。例えば、ユーザが現在どこにいるかに応じて、セル電話機に送信される情報が、特にユーザが間欠的カバレッジの領域内にいる場合、またはユーザがこの位置でセル電話機を有する傾向がない(例えば家族との休日)場合に、必ずしもユーザに達しない場合がある。コンテキストは、環境雑音および/またはコンテキストの他のマスキング特性または気をそらす特性の故に、伝送信頼性に影響する可能性もある。
通信の実際のコストは、シンクに伝達される通知に含まれる場合のユーザへの情報の通信の実際のコストを示す。例えば、このコストに、セル電話送信に関連する料金を含めることができる。中断のコストに、特定のコンテキストでの、デバイスの特定のモードによって使用される警告に関連する中断に関連する注意コストが含まれる。注意コストは、通常は、ユーザの注意の特定のフォーカスに敏感である。忠実度/レンダリング機能は、モードを与えられた場合の、デバイスのテキスト機能、グラフィックス機能、およびオーディオ/触覚機能の記述である。例えば、セル電話機のテキスト限度は、単一のメッセージについて100文字とすることができ、電話機は、グラフィックス機能を有しない場合がある。
図25を見ると、例示的インターフェース2500に、ユーザの現在のコンテキストを判定する際にコンテキストアナライザによって使用できる、ユーザが選択可能なコンテキスト指定が示されている。ユーザによる直接指定によるユーザコンテキストおよび/またはユーザ変更可能なプロファイルの判定を説明する。ユーザのコンテキストに、ユーザの注意フォーカスすなわち、ユーザが現在通知警告の受け取りに反応できるかどうか、ならびにユーザの現在位置を含めることができる。しかし、本発明は、それに制限されない。
ユーザによるコンテキストの直接指定によって、ユーザが、警告の受け取りに応えることができるかどうかと、それを受け取ることを望む場所を示すことが可能になる。デフォルトプロファイル(図示せず)を使用して、デフォルトの注意状態およびユーザが警告を受け取れるデフォルト場所を示すことができる。デフォルトプロファイルは、ユーザが望み通りに変更することができる。
図25を参照すると、インターフェース2500に、本発明の態様に従って、コンテキストの直接指定がどのように実施されるかが示されている。例えば、ウィンドウ2502は、注意フォーカスセクション2520および位置セクション2540を有する。フォーカスセクション2520内で、ユーザは、例えば、ユーザがいつでも警告を受け取ることができるかどうか;ユーザが絶対に警告を受け取ることができないかどうか;およびユーザが所定の閾値を超える重要性レベルを有する警告だけを受け取ることができるかどうかを示す、1つまたは複数のチェックボックス2522にチェックマークを付けることができる。他の可用性選択を提供できることを諒解されたい。図25からわかるように、閾値は、ドル単位で測定することができるが、これは例示のみを目的とし、本発明はこれに制限されない。ユーザは、新しい値を直接に入力することによって、または矢印2526を介して閾値を増減することによって、ボックス2524内の閾値を増やすことができる。
位置セクション2540内で、ユーザは、ユーザが警告を伝達させることを望む場所を示すために、1つまたは複数のチェックボックス2542にチェックマークを付けることができる。例えば、ユーザは、デスクトップ機に、電子メールによって、ラップトップ機に、セル電話機で、自動車内で、ポケットベルで、携帯情報端末(PDA)デバイスでなど、警告を伝達させることができる。しかし、これらが、例示のみであり、本発明自体が、それに制限されないことを諒解されたい。
ウィンドウ2502は、セクション2520のチェックボックス2522およびボックス2524ならびにセクション2540のチェックボックス2542のプリセットデフォルトを設けることができるが、デフォルトユーザプロファイルと考えることができる。プロファイルは、ユーザが自分の望みの選択によってデフォルト選択をオーバーライドできるという点で、ユーザ変更可能である。他のタイプのプロファイルを、本発明に従って使用することもできる。
図26を参照すると、本発明の態様による、例えば1つまたは複数のセンサを使用する、直接測定によるユーザコンテキストの判定が示されている。ユーザのコンテキストに、ユーザの注意フォーカスならびにユーザの現在位置を含めることができる。しかし、本発明自体は、それに制限されない。コンテキストの直接測定は、センサを使用して、ユーザが現在警告の受け取りに反応できるかどうかを検出し、ユーザが現在どこにいるかを検出できることを示す。本発明の一態様によれば、この説明の後のセクションで説明するように、推論分析を直接測定と共に使用して、ユーザコンテキストを判定することができる。
図26を参照すると、ユーザコンテキストの直接測定を達成できるシステム2600が示されている。例えば、システム2600に、コンテキストアナライザ2602と、それに通信的に結合された複数のセンサ2604〜2616すなわち、セル電話機2604、ビデオカメラ2606、マイクロホン2608、キーボード2610、PDA2612、車両2614、およびGPS2616が含まれる。図26に示されたセンサ2604〜2616は、例示のみを目的とし、本発明自体に対する制限または制約を表すものではない。本明細書で使用される用語センサは、一般的で過度に包括的な用語であり、コンテキストアナライザ2602が、それによってユーザの現在の注意フォーカスが何であり、および/またはユーザの現在位置がどこであるかを判定できるすべてのデバイスまたは形を意味する。
例えば、ユーザが、セル電話機2604をオンにしている場合に、これは、ユーザがセル電話機2604で警告を受け取れることを示すことができる。しかし、ユーザが、現在、セル電話機2604で通話中である場合に、これは、ユーザの注意フォーカスが他の何か(すなわち、現在の電話呼び出し)にあり、ユーザが、現在通知警告によって邪魔されてはならないことを示すことができる。ビデオカメラ2606は、例えば、ユーザのオフィスにあって、ユーザがオフィスにいるかどうか(すなわちユーザの位置)と、他者もユーザのオフィスにおり、ユーザが彼らと会っており、ユーザの邪魔をしてはならない(すなわちユーザのフォーカス)ことが示されるかどうかを検出することができる。同様に、マイクロホン2608も、ユーザのオフィスに置いて、ユーザが誰かと話しており、ユーザの邪魔をしてはならないか、キーボードをタイプしており(例えば、それから発する音を介して)、やはり現在ユーザの邪魔をしてはならないかどうかを検出することができる。キーボード2610を使用して、ユーザが現在それをタイプしているかどうかを判定することもでき、例えば、ユーザが非常に早くタイプしている場合に、これは、ユーザが、コンピュータ関連のアクティビティに焦点を合わせており、不当に邪魔をしてはならないことを示すことができる(また、ユーザが、実際にオフィスにいることを示すことができる)。
PDAデバイス2612が、ユーザによってアクセスされつつある場合に、これは、ユーザが、デバイス2612で警告を受け取ることができることを示すことができる。すなわち、通知を伝達すべき位置は、デバイス2612がある場所である。デバイス2612は、ユーザの現在の注意フォーカスを判定するのにも使用することができる。車両2614は、ユーザが現在車両内にいるかどうか、すなわち、車両が、ユーザによって現在操作されつつあるかどうかを判定するのに使用することができる。さらに、車両の速度を考慮して、例えば、ユーザのフォーカスが何であるかを判定することができる。例えば、速度が所定の速度より高い場合に、ユーザが運転に焦点を合わせており、通知警告で邪魔してはならないと判定することができる。GPSデバイス2616も、当技術分野で既知のように、ユーザの現在位置を確認するのに使用することができる。
この詳細な説明の次のセクションでは、ユーザが変更可能なルールに従うユーザコンテキストの判定を説明する。ユーザのコンテキストに、ユーザの注意フォーカスならびにユーザの現在位置を含めることができる。しかし、本発明はこれに制限されない。ルールを介するコンテキストの判定は、if−thenルールの階層セットに従って、ユーザの位置および/または注意フォーカスを判定できることを示す。
図27を参照すると、図に、ルールの例示的な階層順序付きセット2700が示されている。ルールのセット2700に、例えば、ルール2702、2704、2706、2708、2710、2712、および2714が示されている。他のルールを、同様に構成できることに留意されたい。図27からわかるように、ルール2704および2706は、2702に従属し、ルール2706は、ルール2704に従属し、ルール2714は、ルール2712に従属する。ルールは、ルール2702が最初にテストされ、真であるとわかった場合に、ルール2704がテストされ、ルール2704が真であるとわかった場合に、ルール2706がテストされるように順序付けられている。ルール2704が偽であるとわかった場合には、ルール2708をテストする。ルール2702が偽であるとわかった場合には、ルール2710をテストし、これが真であるとわかった場合には、ルール2712をテストし、これが真であるとわかった場合には、ルール2714をテストする。ルールは、ユーザ作成可能および/または変更可能であることが望ましい。他のタイプのルールも、ルールのセット2700に含めることができる(例えば、if−thenルールが偽であるとわかった場合に、otherwiseルールが制御することができる)。
したがって、ユーザのコンテキストが判定されるように、ユーザがルールのセットを構成することができる。例えば、位置に関して、ルールのセットを、現在の日がウィークデイであるかどうかを第1ルールがテストするものとすることができる。そうである場合に、第1ルールに従属する第2ルールで、現在時刻が午前9時と午後5時の間であるかどうかをテストする。そうである場合に、第2ルールは、ユーザがオフィスにいることを示し、そうでない場合にはユーザが自宅にいることを示す。第1ルールが偽である、すなわち、現在の日が週末であってウィークデイでないとわかった場合に、otherwiseルールが、ユーザが自宅にいると述べることができる。この例が、本発明の制限的な例を意味するものではなく、1つまたは複数の他のルールを、同様に構成できることに留意されたい。
この説明の次のセクションでは、統計モデルおよび/またはベイジアンモデルを使用することによるなど、推論分析によるユーザコンテキストの判定を説明する。推論分析を介するコンテキスト判定が、前に説明したセンサを介する直接判定など、他の判定のある態様に頼ることができることに留意されたい。本明細書で使用される推論分析は、出力変数すなわち、ユーザの現在のコンテキストを作るために、複数の入力変数に対して推論プロセスを使用することを指す。この分析に、一態様で、統計モデルおよび/またはベイジアンモデルの使用を含めることができる。
図28を参照すると、システム2800の図に、本発明の態様による、ユーザコンテキスト2804を判定するために推論分析が推論エンジン2802によって実行されるシステム2800の図が示されている。エンジン2802は、一態様で、メモリなど、コンピュータのコンピュータ可読メディアからコンピュータのプロセッサによって実行されるコンピュータプログラムである。ユーザコンテキスト2804は、エンジン2802の出力変数と考えることができる。
エンジン2802は、1つまたは複数の入力変数を処理して、コンテキスト判断を行うことができる。そのような入力変数に、例えば、この説明の前のセクションでコンテキスト判定の直接測定手法に関して説明したセンサなどの1つまたは複数のセンサ2808、ならびにユーザのスケジューリングプログラムまたは個人情報マネージャ(PIM)コンピュータプログラムおよび/またはユーザのPDAデバイスでアクセスできるクロック2810およびカレンダ2812によって表されるものなどの現在日時を含めることができる。図28に示されたもの以外の他の入力変数も、検討することができる。図28の変数は、本発明自体に対する制限または制約となることを意図されたものではない。
図29および30を参照すると、本発明の態様による、上で説明した推論エンジンによって実行できる統計モデルおよび/またはベイジアンモデルによって提供されるものなどの例示的推論モデルが示されている。一般に、コンピュータシステムは、ユーザの状態の詳細に関して多少不確かである可能性がある。したがって、不確実性の下でユーザの注意または他の状態に関する推論を行うことができる、確率モデルを構成することができる。ベイジアンモデルは、ユーザの注意のフォーカスに関する確率分布を推論することができる。そのような注意の状態は、プロトタイプ的状況のセットまたはユーザによって対処される認識の課題の別個のクラスのセットのより抽象的な表現として定式化することができる。その代わりに、注意フォーカスの継続的測定値に関する推論を行うモデルおよび/または異なるタイプの通知の割込みのコストに対する確率分布を直接に推論するモデルを定式化することができる。
ユーザのアクティビティおよび位置に関する観察のセットに基づいて代替アクティビティコンテキストまたは状態の確率を推論できるベイジアンネットワークを使用することができる。例として、図29に、単一時間期間のユーザの注意のフォーカスを推論するベイジアンネットワーク2900を示す。変数の状態、注意のフォーカス2920は、デスクトップコンテキストおよび非デスクトップコンテキストを指す。このモデルで検討される例示的な注意コンテキストに、例えば、状況の意識、キャッチアップ、非特有バックグラウンドタスク、フォーカスのあるコンテンツの生成または再検討、軽いコンテンツの再生または再検討、文書のブラウズ、オフィスでの会議、オフィスの外での会議、プレゼンテーションの傾聴、プライベートタイム、家族との時間、個人的フォーカス、軽い会話、および旅行が含まれる。ベイジアンネットワーク2900は、ユーザの現在の注意および位置が、ユーザのスケジューリングされた面会予定2930、時刻2940、および締切の近接2950によって影響されることを示す。ユーザの注意に関する確率分布は、例えば、ユーザのオフィスで監視される環境音響信号2960の状況のサマリによっても影響される。経時的な環境音響信号2960のセグメントは、アクティビティおよび会話の存在に関する手がかり/入力を提供する。ソフトウェアアプリケーションの状況および構成と、コンピュータと対話するユーザによって生成されるユーザアクティビティの進行中のストリームも、ユーザの注意に関する証拠のソースを提供する。
ネットワーク2900からわかるように、現在、オペレーティングシステムまたは他の環境の最上位のフォーカスにあるソフトウェアアプリケーション2970は、ユーザのフォーカスおよびタスクの性質に影響し、ユーザの注意の状況およびフォーカスのあるアプリケーションは、一緒に、計算中心型アクティビティに影響する。そのようなアクティビティに、マウスおよびキーボードのアクションのシーケンスから作られるユーザアクティビティのストリームと、より広い計画対象期間にわたるアプリケーション使用の高水準パターンが含まれる。そのようなパターンに、電子メールセントリックおよびワードプロセッサセントリックが含まれ、複数のアプリケーションがインターリーブされる形を伴うアクティビティのプロトタイプ的クラスが参照される。
図30に、異なる時間の期間でのコンテキスト変数の間でのユーザの注意フォーカスのベイジアンモデル3000を示す。マルコフ時間依存性のセットが、モデル3000によって示され、コンテキスト変数の過去の状態は、ユーザの状態の現在の判定で検討される。リアルタイムで、そのようなベイジアンモデル3000が、例えば、オンラインカレンダによって提供される情報と、イベント感知システム(図示せず)によって報告される部屋の音響およびユーザアクティビティに関する観察のストリームを検討し、ユーザの注意の確率分布に関する推論結果を提供し続ける。
図31および32に、本発明に従って、コンテキストアアナライザおよび通知エンジンなどの通知アーキテクチャの諸部分を提供する方法論を示す。説明を単純にするために、この方法論を、一連の動作として図示し、説明するが、本発明によれば、一部の動作を、図示し、本明細書で説明するものと異なる順序でおよび/または他の動作と同時に実行できるので、本発明が、動作の順序によって制限されないことを理解し、諒解されたい。例えば、当業者は、この方法論を、その代わりに、状態図でなど、一連の相互に関係する状態またはイベントとして表現できることを理解し、諒解するであろう。さらに、示された動作のいずれかが、本発明による方法論の実施に必要ではない可能性がある。
図31を参照すると、流れ図3100に、本発明によるユーザのコンテキストの判定が示されている。この処理には、3102でユーザの位置を判定することと、3140でユーザのフォーカスを判定することが含まれる。これらの動作は、前に説明した手法のうちの1つまたは複数によって達成することができる。例えば、プロファイルを使用することができ;ユーザが自分のコンテキストを指定することができ;コンテキストの直接測定を使用することができ;ルールのセットに従うことができ;ベイジアンモデルまたは統計モデルを介するなどの推論分析を実行することもできる。他の分析を使用して、ユーザのコンテキストを判定できることを諒解されたい。例えば、誰かがコンピュータの前にいるかどうかおよびその人がコンピュータを見ているかどうかに注目する一体化されたビデオカメラソースを設けることができる。しかし、このシステムが、カメラありまたはカメラなしで動作できることに留意されたい。すべてのソースについて、このシステムは、コンテキストに関して推論するために特定のソースを必要とするのではなく、実質的にすべての使用可能なソースと共に動作することができる。さらに、他の態様で、ユーザの位置および注意の感知を与える、小さいPDA上の一体化された加速度計、マイクロホン、および近接検出器を設けることができる。
図32を参照すると、流れ図3200に、本発明の態様による通知エンジンの判断プロセスが示されている。3202で、1つまたは複数の通知ソースが、通知を生成し、この通知が、通知エンジンによって受け取られる。3204で、コンテキストアナライザが、ユーザに関するコンテキスト情報を生成/判定し、これが、3206で、通知エンジンによって受け取られる。すなわち、本発明の一態様によれば、3206で、この説明の前のセクションで説明したように、コンテキストアナライザが、ユーザの現在の注意状況および位置を示すユーザコンテキスト情報プロファイルにアクセスし、および/または1つまたは複数のコンテキスト情報ソースからユーザの現在の注意状況および位置に関するリアルタイム情報を査定する。3208で、通知エンジンが、コンテキストアナライザから受け取ったコンテキスト情報に部分的に基づいて、どの通知をどの通知シンクに伝達するかを決定する。通知エンジンは、コンテキストアナライザによって保管されたユーザの通知パラメータに関する情報に基づく判定も行う。すなわち、一態様によれば、3208で、エンジンは、ユーザが所与の通知について警告されなければならないかどうかと、ユーザにどのように通知しなければならないかに関する、決定論的分析を実行する。下で詳細に説明するように、決定論的なおよび/またはヒューリスティックな分析、決定、およびポリシを、3208で使用することができる。ユーザに関する通知パラメータを使用して、欠けている値を満たすことによるか、ソースまたはシンクのスキーマで提供されるパラメータをオーバーライドすることによって、分析をパーソナライズすることができる。通知プリファレンスは、決定論的分析の代わりに使用されるポリシ(例えば、ヒューリスティック)も提供することができる。この決定に基づいて、通知エンジンは、3210で通知をディストリビュータに伝達する。
データ駆動アプリケーションインストール
本発明のもう1つの態様によれば、事前定義のテーブルを更新することによって、情報エージェントアプリケーションのインストールを達成することができる。従来の通知システムならびに他のアプリケーションプログラムには、通常、それがインストールされる場合のデータベースオブジェクトの急増が伴う。すべてのアプリケーションが、慣習的に、インストールプロセス中にプロシージャならびに大量のテーブルおよびデータベースを保管しなければならなかった。しかし、本発明は、異なる手法を使用する。第1に、情報エージェントシステム100などのシステムまたはプラットフォームがインストールされる場合に、テーブルの基礎セットを作成することができる。したがって、アプリケーションインストールには、単に、既存テーブルにデータを挿入することが含まれる。この手法では、インストールされるアプリケーションの数が増える際のデータベースオブジェクトの急増が除去され、拡張性が可能になる(下で説明する)。
前述を達成するために、イベント、プリファレンス、およびプロシージャのすべてを、データとして保管することができる。これによって、システムが、データベースエンジンおよびクエリのますます高まる処理能力を活用して、情報エージェントアプリケーション300(図3)などの複数のアプリケーションを実行することが可能になる。上で説明したように、プリファレンスは、エンドユーザによって定義され、その後、テーブルおよびデータベース内の高水準データフィールドに抽出することができる。イベントをキャプチャするか取り出し、その後、データベースに保管することができる。クエリ評価プロシージャなどの従来のストアドプロシージャも、プロシージャを作成し、そのテキストを1つまたは複数のデータベーステーブルにロールすることによって、データとして表すことができる。その後、プロシージャが実行される場合に、プロシージャを表すテキストのストリングが、データベーステーブルから引き出され、データベース内で動的に評価される。この手法は、アプリケーションが作成する必要のあるストアドプロシージャの数を劇的に減らし、アプリケーションインストールを、単なるDML(データ操作言語)データ駆動動作にする。
結合可能性(composabilit)および拡張性
このセクションでは、最初の作成の時に情報エージェントアプリケーションがどのように構成され、後にどのように拡張されるかを説明する。情報エージェントアプリケーション(IAアプリケーション)は、エンドユーザが、event−condition−action(ECA)モデルを介して基礎になるシステムまたはアプリケーションドメインと対話することを可能にするように設計される。具体的に言うと、情報エージェントアプリケーションは、特に、ユーザコンテキストへの感度が重要である情報のルーティング、フィルタリング、および処理を扱う問題ドメインに関して、他のアプリケーション機能をどのように適用するかを制御するプリファレンスをユーザが記述できることを可能にするように設計される。これに基づいて、情報エージェントアプリケーションの結合可能性および拡張性は、基礎になるシステムまたはアプリケーションドメインの構成または拡張を対象とするのではなく、ユーザがプリファレンスを効果的に作成する能力(新ECAインスタンス化)を対象とすると理解されたい。
新しいアプリケーション、コンポーネント、またはシステムモデルを作成することは、情報エージェントアプリケーションの結合可能性および拡張性の目標ではない(これは可能であり、本発明の範囲内で検討されなければならないが)。そうではなく、目標は、ユーザがECAモデル(例えば判断ロジックコンポーネント330)を介してプリファレンスロジックを指定できるようにするレイヤまたはシステムのコンポーネントへの動的拡張を可能にすることである。具体的に言うと、所与のアプリケーションがインストールされた時の後に、新しい条件およびアクション(ECAのCA部分)をエンドユーザが使用可能にすることを可能にすることである。さらに、イベント(ECAのE部分)も、類似する形で動的に拡張できることも諒解されたい。
本発明の一態様によれば、情報エージェントアプリケーションは、プリファレンスを定義するためにそれ自体のユーザインターフェースを有するのではなく、その代わりに、プリファレンス作成に関してオペレーティングシステムインターフェースまたはアプリケーション固有ユーザインターフェースのいずれかを使用する。このコンテキストで、情報エージェントアプリケーションの結合可能性および拡張性は、その後に既存ユーザインターフェースを使用して、ユーザが新しい条件およびアクションを有する新しいプリファレンスを作成できるようにすることができる形で新しい条件およびアクションを追加するように設計される。これに関して、IAアプリケーションは、新しい機能性のシグネチャを拡張を提供する記述と共に適当に表示できて、新しい条件およびアクションをいつどのように適当に使用するかに関するエンドユーザコンテキストを提供するように、新しい条件およびアクションに対するリフレクションをサポートすることができる。
情報エージェントアプリケーションの、様々なコンテキスト内で様々な時に、多様性が存在する。具体的に言うと、IAアプリケーションは、それ自体で完全な自立したものとすることができるが、多数のIAアプリケーションは、実際には、他のIAアプリケーションと相互作用し、これらによって提供される機能性を活用する。具体的には、あるアプリケーションによって定義された条件およびアクションの機能を、他のアプリケーションによって使用することもできる。IAエージェントは、複数の他の形で互いに相互作用することもできる。例えば、あるIAアプリケーションでのプリファレンス評価が、別のIAアプリケーションにサブミットされるイベントを作るアクションにトリガをかけることができる。
結合可能性と拡張性の間の区別は、情報エージェントアプリケーションの集合がどのように相互作用し、展開するかを理解するのに重要である。結合可能性は、アプリケーションが最初に作成される時に存在し、他の情報エージェントアプリケーションによって提供される機能に基づいて作られる新しい情報エージェントアプリケーションが作成される場合に使用される概念である。拡張性は、既に存在する情報エージェントアプリケーションを、そのアプリケーションが作成またはインストールされた後に作られた新しい機能性によって拡張する概念および処理を指す。さらに、共通の機構のセットが、結合可能性および拡張性の両方のサポートに使用されるので、そのような共通の機構が、結合可能性と拡張性の多少異なる目的を達成するのにどのように使用されるかの微妙な相違を理解することが重要である。IAアプリケーション結合可能性という概念は、単一のIAアプリケーションを個々の部分のセットから構成するプロセスにも適用可能である。結合可能性のこの態様は、モジュールの形でのIAアプリケーションの開発というソフトウェアエンジニアリング目標に対処する。IAアプリケーションシステムに導入されつつある拡張性という概念は、拡張性の伝統的な概念と一貫する。すなわち、新しい機能性が、IAアプリケーションの最初の定義の後に追加され、これによって、そのアプリケーションの機能が拡張される。
かなりの程度まで、IAアプリケーションの尺度は、ユーザに提示される機能によって決定される。したがって、IAアプリケーションが拡張可能である度合は、既存アプリケーションのコンテキスト内で新しいプリファレンスを定義するユーザに新しい条件およびアクションが使用可能にされる範囲によって決定することができる。IAアプリケーション拡張性は、主に、最初のアプリケーションの作成者によるさらなる介入なしで、アプリケーションがインストールされた時の後に新しい条件およびアクションをアプリケーションに追加することを可能にすることを目指す。これをどのように行うかを理解するために、アクションまたは条件の機能の定義が最終的に情報エージェントアプリケーションのエンドユーザからアクセス可能になる進化チェーンを強調することが重要である。
図33を見ると、本発明の態様による条件/アクション進化チェーン3300が示されている。条件およびアクションは、3310で、条件機能またはアクション機能として開始される。この機能指定は、例えばSQL呼び出し可能間数/ストアドプロシージャの定義の形式シグネチャを参照する場合に使用することができる。新しい条件機能またはアクション機能が定義される時と、機能が対応する条件またはアクションの宣言によって既存アプリケーションにバインドされる時の間に、機能は、候補機能と考えられる。3320で、候補機能の開発者は、ターゲットの拡張されるアプリケーションが候補条件または候補アクションと称する機能から条件またはアクションを作成できるようにするバインディングを指定する。この段階で、条件またはアクションは、アプリケーションが条件またはアクションを使用できるが、それを受け入れる必要がない、既存の拡張されるアプリケーションによる使用のための候補である。拡張されるアプリケーションの受入ロジックは、例えば提案される拡張/バインディングに誰が署名したかに基づいて、そのバインディングを受け入れるか否かを決定する。アプリケーションが、そのプリファレンスクラスを条件機能またはロジック機能にバインドしたならば、候補条件または候補アクションが、3330で、単純に条件またはアクションになる。最後に、エンドユーザが、新たに定義されたプリファレンスのコンテキスト内で条件またはアクションを使用する場合に、そのアクションまたは条件が、チェーンの3340に示されているように、インスタンス化されると言う。
図34に、本発明の態様によるアプリケーション相互作用のシステム3400を示す。システム3400に、インスタンスレジストリコンポーネント3410、定義レジストリ3412、バインディングレジストリ3414、アプリケーションA3430、アプリケーションB3440、バインディング3450、および拡張コンポーネント3420が含まれる。拡張性の一実施形態で、開発の単位は、アプリケーションまたは拡張である。インスタンスは、アプリケーションまたはアプリケーションデータファイル(ADF)を追加することによって拡張される。ADFは、単一アプリケーションが展開されている場合に使用するために開発者によって作成することができる。ADFは、一般に、アプリケーションの中央ロジックを定義し、なかんずく、イベント、条件、および通知などのアクションのスキーマを含めることができる。アプリケーションは、拡張または拡張データファイル(EDF)を追加することによって拡張することができる。EDFは、誰でも作成でき、インスタンスおよびアプリケーションが作成された後(アプリケーションの最初のインストールを含む)のいつでも使用される。
アプリケーションが機能性を共有するために、アプリケーションは、お互いを知る必要がある。本発明の態様によれば、これは、機能に関する情報および機能がアプリケーションにどのようにバインドされるかを保管する、定義レジストリ3412およびバインディングレジストリ3414からなるインスタンスレジストリ3410を使用することによって達成することができる。インスタンスレジストリ3410は、アプリケーションがデータを保管する共有位置を提供する。インスタンスレジストリ3410に、定義レジストリ3412およびバインディングレジストリ3414が含まれる。
定義レジストリ3412は、アプリケーション機能に関する情報を保管する。本発明の態様によれば、アプリケーション(例えば、IAアプリケーション)によって使用されるアプリケーション機能を、定義レジストリ3412に登録または保管することができる。定義レジストリ3412での機能の登録によって、その機能が、システムで動作するすべてのアプリケーションにパブリックになる。したがって、アプリケーションによって使用される機能は、それが定義レジストリに登録されていないことを意味する完全プライベート、または定義レジストリに登録され、他のすべてのアプリケーションからアクセス可能であることを意味するパブリックのいずれかである。これが、定義レジストリを実施する形の1つにすぎないことに留意されたい。もう1つの実施機構では、機能がパブリックまたはプライベートのどちらであるかを示すインジケータを保管することができる。定義レジストリに組み込むことができる例の情報に、次が含まれる。
Figure 0004896726
バインディングレジストリ3414は、複数のアプリケーションからの、バインディング、条件、アクション、および機能へのアクセッサを保管することができる。これは、その機能が、最初の定義またはアプリケーションに対する後の拡張のどちらから導出されるかに無関係に真である。さらに、本発明の態様によれば、パブリック機能は、バインドするメタデータなしでは使用可能でないことに留意されたい。バインドするメタデータは、パブリック機能をアプリケーションデータイベントデータにどのようにバインドするかを指定する情報である。バインディングレジストリ3414にパブリック機能を登録することによって、アプリケーションに機能がバインドされる。これは、1対多関係であり、1つの機能を多数の異なるアプリケーションにバインドすることができる。
バインディングレジストリ3414に登録されたバインディングは、複数の状況を有することができる。例えば、バインディングを、候補バインディングとすることができる。候補バインディングは、機能の定義者によって作成され、他のアプリケーションから使用可能にされる。バインディングは、特定のアプリケーッションが所与の条件機能またはアクション機能にどのようにバインドされるかを表す、バインディングが所与のアプリケーションに固有であることを示すバインドされた機能の状況を有することもできる。さらに、バインディングが、「受け入れられない」状況を有することができる。これらは、特定のアプリケーションをターゲットとするが、ターゲットにされたアプリケーションの受入ロジックによって受け入れられなかった候補機能である。受入ロジックは、ADFで宣言でき、とりわけ、EDFソースが真正であり(例えば、デジタル署名を使用する)、許可され(例えば、信頼されるソースのリストから)、証明される(EDFが信頼されるソースによって署名されている)ことを保証するコンポーネントを含めることができる。バインディングレジストリ3414に収容できるさらなる情報に、次が含まれるが、これに制限はされない。
Figure 0004896726
拡張コンポーネント3420は、候補機能に基づいて、条件およびアクションを作成する。拡張コンポーネント3420は、候補機能をアプリケーションにバインドするために、インストール時にインストールスクリプトによって呼び出すことができる。新しい候補機能エントリが、バインディングレジストリ3414内で作られる場合に、ターゲットアプリケーションの側で行われるアクションまたはアクションの欠如に応じて、複数のことが起こる可能性がある。例えば、ターゲットアプリケーションがインストールされていない場合に、エントリを無視することができる。ターゲットアプリケーションがインストールされているが、拡張を受け入れるように構成されていない場合に、やはり、エントリを無視することができる。しかし、ターゲットアプリケーションがインストールされており、候補機能を受け入れる場合には、新しい条件、アクション、またはアクセッサのバインディングが、そのアプリケーション用に作成され、拡張コンポーネント3420を使用してアプリケーションにバインドされる。したがって、システム3400で、アプリケーションA3430に、アプリケーションB3440から使用可能にされることが望まれるローカル機能「ConditionFuncx」が含まれる。この機能は、拡張データファイル(EDF)を追加することによってアプリケーションB3440から使用可能にすることができる。その後、この機能が、アプリケーションB3440から使用可能になる形でインスタンスレジストリ3410に保管される。例えば、ConditionFuncXを、定義レジストリ3412に登録することができ、候補機能を、バインディングレジストリ3414に保管することができる。拡張コンポーネント3420は、バインディングレジストリ3414から候補機能を読み取り、アプリケーションB3440にバインドすることによって条件Aを作成することができる。したがって、バインディング3450が作成され、条件AがアプリケーションAのConditionFuncXにバインドされる。
バインディングまたは依存性が確立されたならば、これらを多数の形で破壊できることに留意されたい。例えば、アプリケーションによって実装される機能は、そのアプリケーションがアンインストールされた場合に使用不能になる可能性がある(すなわち、破壊された依存性)。依存性を破壊できるもう1つの例が、新しいアプリケーションが、もはや使用可能でない機能にバインドされた新しい条件、アクション、またはアクセッサと共にインストールされる場合である。アプリケーションがもはやすべてまたは特定の拡張を受け入れないように再構成される場合に、さらなる依存性を破壊することができる。したがって、既存プリファレンスは、もはや使用可能でない条件、アクション、またはアクセッサに対する依存性を有する場合がある。破壊された依存性は、多数の形で補償することができる。本発明の態様によれば、使用不能状態を定義することができる。例えば、アプリケーションが、結局依存性を破壊することを許可される前に、他のすべてのアプリケーションは、依存性プリファレンスを「NotAvailable(使用不能)」状態にすることができるように通知されることができる。その後、アプリケーションがインストールされる場合に、システムまたはアプリケーションは、使用不能状態を使用可能に変更でき、プリファレンスを利用できるようにするために、依存性が再確立されたかどうかを検査することができる。
プリファレンスを、情報エージェントアプリケーションの間で作成することができる。プリファレンスインストールは、IAアプリケーションの間の相互作用を達成できる方法を表す。本発明の態様によれば、複数のIAアプリケーションで機能にアクセスするプリファレンスをユーザが作成できるようにする少なくとも2つの機構を提供することができる。1つの機構が、EDFバインディングである。アプリケーション開発者は、EDFバインディングを作成して、あるアプリケーションのプリファレンスクラスが他のアプリケーションで定義された条件およびアクションを参照できるようにすることができる。これによって、エンドユーザが、複数のアプリケーションからの条件およびアクションを参照するプリファレンスをインスタンス化できるようになる。イベントサブミッションアクションは、複数のアプリケーションによって提供される機能を利用することもできる。イベントサブミッションアクション機能は、イベントクラスがアプリケーションによって定義される場合に暗黙のうちに作成することができる。その後、これらのイベントサブミッションアクション機能を、他のアプリケーションによって使用されるEDFを介してアクションにバインドすることができ、これによって、新たに作成されるユーザプリファレンスの潜在的な機能性が豊かになる。
アプリケーションが、エンドユーザではなくアプリケーション開発者によって指定されるプリファレンスを直接にインスタンス化することを可能にするために、追加の機構またはコンポーネントが必要になる場合がある。1つの機構またはコンポーネントが、プリファレンステンプレートに対応することができる。プリファレンステンプレートは、プリファレンスクラスのコンテキストで定義することができ、条件およびクラスのセットを含む。プリファレンスクラスの構文を、テンプレートを定義するための新しいタグを用いて拡張することができる。その後、このタグを、新しいテンプレートを用いてアプリケーションを拡張するためにEDFによって使用することができる。プリファレンスインスタンス化アクションを使用することもできる。新しいプリファレンステンプレートが作成される場合に、アクション機能を暗黙のうちに作成して、指定されたテンプレートからプリファレンスをインスタンス化することができる。そのアクション機能へのパラメータは、そのテンプレートの条件アクションの固定されたセットからプリファレンスをインスタンス化するのに必要な定数を表す。
開発者は、エンドユーザによる明示的干渉なしに、アプリケーション内およびアプリケーション間の両方でプリファレンスをインスタンス化することもできる。複数の機構を使用して、この機能性を達成することができる。例えば、新しいADFタグをプリファレンスクラスに追加して、アプリケーション定義時に直接にADF内でプリファレンスをインスタンス化することを可能にすることができる。その代わりに、新しいEDFタグを、プリファレンスクラスに追加することができる。これによって、アプリケーションの定義中およびその後の両方に、プリファレンスをインスタンス化することが可能になる。さらに、プリファレンスインスタンス化は、例えばシステムAPIの使用を介して、スキーマ定義の外部でスクリプト(例えばSQLスクリプト)を介して達成することができる。
前述の機能があれば、1つのアプリケーションがイベントを送る時、条件/アクションを評価する時、または他のアプリケーションでプリファレンスをインスタンス化する時に、アプリケーション(例えば、IAアプリケーション)相互作用を行うことができる。そのような相互作用は、開発者によって直接に、またはエンドユーザ定義のプリファレンスを介して達成することができる。
アプリケーションの結合可能性および拡張性の様々な態様のさらなる理解のために、複数の例を下で提供する。ShellAppは、オペレーティングシステム情報エージェントアプリケーションである。Officeも、情報エージェントアプリケーションである。
例1 構成
構成は、既存の既知の機能をバインドするために新しいアプリケーションがオーサリングされる場合に定義することができる。この場合に、ShellAppが、まずインストールされ、その後、Officeがインストールされる。Officeがオーサリングされた場合に、開発者は、ShellAppのFuncX条件機能について知っており、これを活用するようにOfficeアプリケーションを設計した。Officeがインストールされる場合に、Officeは、FuncX条件機能(古い機能)をOfficeアプリケーション(新しいアプリケーション)の条件にバインドするバインディングをバインディングレジストリに登録する。Officeアプリケーションインストールスクリプトが、拡張コンポーネントを呼び出し、この拡張コンポーネントが、バインディングレジストリを読み取る。拡張コンポーネントは、条件定義が既にある(「組み込まれている」)ことを検出でき、したがって、インスタンス全体でNotAvailable状態を再評価する次のステップをスキップする。このOfficeアプリケーションを、ShellAppによって拡張されたと言う。
例2 拡張
拡張は、新しい機能を用いて古いアプリケーションを拡張する場合に定義することができる。この例では、上と同様に、ShellAppがインストールされ、その後、Officeがインストールされる。Officeがオーサリングされた場合に、開発者は、ShellAppで使用できるアクション機能FuncYを作成した。Officeがインストールされる場合に、Officeは、アクション機能を定義レジストリに登録し、OfficeアプリケーションのFuncY(新しい機能)をShellApp(古いアプリケーション)のアクションにバインドするバインディングをバインディングレジストリに登録する。Officeアプリケーションのスクリプトが、拡張コンポーネントを呼び出して、ShellAppに対応するアクションがない新しいバインディングがあることを検出し、したがって、そのアクションをShellApp内で作成することによって、そのアクションを内部化する。次に、このスクリプトは、インスタンス全体のNotAvailable状態を再評価する。ShellAppは、Officeアプリケーションによって拡張されたと言う。
例3 パッチ拡張
パッチは、機能とアプリケーションの両方がシステムに既にインストール済みである場合に行うことができる。したがって、ShellAppとOfficeの両方がシステムにインストールされており、その後、オフィスサービスパックがインストールされると仮定する。Officeアプリケーションの公開の後に、開発者は、ShellAppが使用できるアクション機能がOfficeにあることを理解する。サービスパックに、なかんずく、新しいOfficeアプリケーション条件をOfficeアプリケーションの条件機能にバインドするバインディングを定義するEDFが含まれる。このサービスパックがインストールされる場合に、このサービスパックは、そのバインディングをバインディングレジストリに登録し、拡張コンポーネントを呼び出すことができる。拡張コンポーネントは、ターゲットアプリケーションに対応するアクションまたは条件を有しない新しいバインディングがあることを検出し、その後、これらをShellAppおよびOfficeアプリケーションで作成することができる。次に、拡張コンポーネントは、インスタンス全体のNotavailable状態を再評価することができる。ShellAppが、Officeアプリケーションによって拡張されたと言い、Officeは、ShellAppによって拡張されたと言うことができる。
例4 アンインストール
前にインストールされたOfficeアプリケーションが、アンインストールされており、その処理中に、定義レジストリおよびバインディングレジストリからすべての登録を削除したと仮定する。ShellAppは、今は除去されているOfficeによって実装された機能に依存するアクションを有する可能性がある。したがって、使用不能またはNotAvailable状態を、破壊された依存性を有するすべてのアクションについて宣言することができる。次に、エンドユーザは、欠けている依存性に関する手がかりを受け取ることができる。次に、エンドユーザは、使用不能なプリファレンスまたはアクションをそのままにする(例えば、Officeが戻される場合に備えて)または単純にそれらを削除することを選ぶことができる。
例5 再インストール
前にアンインストールされたOfficeというアプリケーションが、再インストールされ、インストール中に、アクション機能およびShellAppへのバインディングが再登録されたと仮定する。Officeインストールスクリプトは、拡張コンポーネントを呼び出して、ShellApp内でアクションを作成することができる。しかし、拡張コンポーネントは、条件、アクション、またはアクセッサが既にターゲットアプリケーションに存在する(例えば、アプリケーションが前にインストールされた)場合を単純に検出することができ、作成ステップをスキップする。その後、機能のNotavailable状態を再評価して、アクティブになり得るすべての機能がイネーブルされた状態にされることを保証することができる。
パーソナライズされたフォルダ
上で述べ、説明したシステムは、情報アプリケーションの構成を容易にし、この情報アプリケーションは、イベントの所与のセットに関する判断およびアクションの処理を自動化する。したがって、デスクトップ通知および電子メールの到着を含むがこれに制限されないイベントへの応答をエンドユーザがパーソナライズすることを可能にするアプリケーションを作成することができる。そのようなアプリケーションの1つが、下で説明するパーソナライズされたフォルダアプリケーションである。本発明は、とりわけ図式化されたデータストアおよび図式化されたロジックを使用することによって、パーソナライズされたイベント処理などの機能性を可能にする。
図35を見ると、本発明の態様によるパーソナライズされたシステム3500が示されている。システム3500に、データストア150および情報エージェントアプリケーション300が含まれ、情報エージェントアプリケーション300には、パーソナライズされたフォルダ3510およびプリファレンス3512が含まれる。パーソナライズされたフォルダ3510は、エンドユーザが直観的に指定できる条件式に基づいてアイテムを含むか除外することができるフォルダまたはデータコンテナを指す。一例で、フォルダ3510を、オペレーティングシステムのコンポーネントによって、階層的な形で配置し、実装することができる。しかし、用語フォルダおよびデータコンテナの使用が、制限的な形であることを意味しないことに留意されたい。フォルダ3510は、関係のセットによって定義されるリンク、ポインタ、またはデータのすべての集合に拡張することができる。情報エージェントプリファレンス3512は、非技術的なエンドユーザが、図式化されたロジックと図式化されたデータを組み合わせて(例えば、データストア150を介して)、豊富なパーソナライズされたアプリケーションおよび環境を提供する能力を表す。対照的に、従来のプリファレンスは、単に、単純な条件をストリング定数が提供される直観的な名前と共に使用する。プリファレンス3512は、例えば、On イベント IF 条件 THEN アクションまたはよりアプリケーション固有のOn フォルダイベント IF 条件 THEN include/excludeアクションなどの馴染みのある形のロジックを使用してエンドユーザが指定することができる。さらに、プリファレンス3512は、ユーザアクションに基づいてユーザプリファレンスを学習するのに統計モデルおよび/またはベイジアンモデルを使用することによるなど、推論分析によって開発することができることに留意されたい。本明細書で使用される推論分析は、出力変数すなわち、ユーザプリファレンスまたはプリファレンス開発ツールへの入力を作るために、複数の入力変数に対して推論プロセスを使用することを指す。この分析に、一態様で、統計モデルおよび/またはベイジアンモデルの使用を含めることができるが、これに制限はされない。条件およびアクションの他に、プリファレンスに、プリファレンスの評価を開始するトリガが含まれる。本発明の一態様によれば、そのようなトリガに、明示的なユーザ指示、時間によるスケジューリング、および/または文書の追加、文書の削除、および/またはフォルダ内の文書の変更の際の自動的を含めることができる。さらに、プリファレンス3512をグループ化して、単一の式を介して簡単に作成するには複雑すぎる結果セットを達成できることを諒解されたい(例えば、フォルダに特定のアイテムを含める/除外する、複数のクエリの影響を組み合わせる)。さらに、個別のおよびグループのプリファレンス3512を、ユーザがフォルダ3510の間でドラッグし、ドロップし、切り取り、貼り付けることができる物理的エンティティとして表すことができることに留意されたい。フォルダ3510に、データのコピーまたは単純にストレージデバイスに保管されたデータへのポインタ(別名仮想フォルダ)を含めることができる。保管されたデータに、ワードプロセッシング文書、スプレッドシート、写真、および音楽を含めることができるが、これに制限はされない。さらに、パーソナライズされたフォルダ3510は、複数の異なるドメインのアイテムに関係する関連するプリファレンス3512を有することができる。そのような機能性をサポートするために、事前定義の定数を導入することができる。具体的に言うと、1つのアイテムドメインからの事前定義の定数(例えば、MyGrandparent)を、他のドメインからの条件への引数として使用することができる(例えば、Photosfrom(MyGrandparent))。事前定義の条件および定数の組合せによって、エンドユーザが様々なアイテムドメインを関連付ける単純で直観的な形が提供される。もちろん、ユーザ定義の定数を、パーソナライズされたフォルダの条件に提供することもできる。単純な条件を、アイテムドメインのスキーマから推論することができる。例えば、条件EmailIsFrom()またはSubjectContains()は、電子メールスキーマから推論することができる。しかし、スキーマ開発者は、確かに、有用な条件の豊富なセットと最小限のセットの両方を明示的に指定することができる。さらに、新しい条件を、アプリケーション300に追加し(拡張性)、その後、エンドユーザが新しいプリファレンスを定義することによって使用できることにも留意されたい。新しいスキーマがインストールされる時に、フォルダをパーソナライズする新しい機能が可能になる。
フォルダ3510は、本発明の態様によれば、アクティブまたは派生として分類することができる。アクティブフォルダは、フォルダで、何か興味深いこと(例えば、イベント−ファイル文書の追加、削除、または変更)が起きる場合に、ユーザの代わりにアクションを行う。例えば、写真を、デジタルカメラからMyPicturesという名前のフォルダにダウンロードすることができる。同時にまたはそれから短い時間のうちに、アクティブフォルダは、カレンダアプリケーションに相談して、写真を撮った時にユーザが行っていたことを判定し、その後、適当なタイトル(例えば釣り旅行)を有する新しいフォルダを作成し、その写真を新しいフォルダに移動することができる。電子メールのコンテキストでは、電子メールアプリケーションは、メッセージに出費レポートが含まれる場合を判定し、それがある値未満である場合に、そのレポートを承認済み出費レポートフォルダに移動することができる。アクティブフォルダのもう1つの例示的な使用では、音楽を、アクティブフォルダにダウンロードすることができ、このアクティブフォルダは、アーティストジャンル(例えば、ジャズ、クラシック、ラップ、ロックなど)を判定し、音楽を適当なフォルダに移動する。
派生フォルダは、プリファレンスを使用して、特定のファイルをフォルダに含めるか除外するかを判断する。さらに、派生フォルダを、ファイルへのマッピングまたはポインタを提供する仮想フォルダとすることができることに留意されたい。仮想フォルダは、データを収容する実際のフォルダとして働くが、このフォルダは、実際の物理的な存在を有しない。派生フォルダの使用の1つの例に、ユーザが、最近2週間にそのユーザが少なくとも3回聞いたすべてのジャズ音楽を含むフォルダを定義する状況が含まれる。派生フォルダは、ある例外を有する、特定のタイプのすべてのファイルを含むように、プリファレンスによって定義することもできる。例えば、ジャズ音楽家マイルスデイビスのすべてのトラックを含むが、特定の曲トラック(例えば、ヒューマンネイチャおよびニュールンバ)を除外するように、フォルダを定義することができる。さらに、ユーザが、フォルダにファイルをドラッグアンドドロップでき、フォルダが、ドラッグされたファイルが定義されたタイプであるかどうかを確認するように、プリファレンスを定義することができることに留意されたい。ファイルが、許容されるタイプである場合には、そのフォルダに追加することができ、そうでない場合に、そのファイルを、拒絶する(例えば、フォルダにコピーしない)か、その代わりに、ユーザに、その特定のファイルについて例外が作成されなければならないことのプロンプトを出すことができる。
さらに、あるフォルダが、アクティブフォルダと派生フォルダの両方の特性を示すことができることに留意されたい。したがって、一部のフォルダは、どのアイテムがフォルダに含まれるかを指定する、それに関連付けられたプリファレンスと、あるイベントがこれらのアイテムに対して発生する場合に行うべきアクションを指定するプリファレンスを有することができる。
アプリケーションを、システム100の実行エンジンを使用して処理することができる。前に開示したように、プリファレンスを、データとして保管し、データクエリの形で実行することができる。データストア150は、1つまたは複数のテーブルにデータを保管することができ、このテーブルを、プリファレンス情報を使用して照会することができる。従来、テーブルのデータベースに対するクエリの実行は、計算的に実行不能である。というのは、フォルダ内のデータが最新状態に保たれることを保証するために、比較的短い間隔でクエリを継続的に実行しなければならないからである。これは、プロセッサが、フォルダデータを更新するために継続的にクエリを実行しながら複数のプログラムを効率的に実行できないパーソナルコンピュータなどの軽いシステムで特に非実用的である。しかし、本発明は、データが追加され、削除され、または変更される場合など、イベントの発生時にクエリを実行することによって、この問題を克服する。したがって、プロセッサは、継続的にクエリを実行するという重荷を負わず、フォルダデータが最新に保たれる。
アクティブフォルダに基づくワークフロー様のアクティビティ
パーソナライゼーション(例えば、ECAルール)は、ワークフローまたはタスクスケジュールと別個である。ワークフローまたはタスクスケジュールは、フォルダ内のアイテムを介して表現できる、作業のマルチステップの部分である。パーソナライゼーションは、エンドユーザが、エンドユーザに意味のあるイベント(例えば、電子メール到着)またはシステム/アプリケーション挙動(例えば、ユーザコンテキストに基づくデスクトップ割込みの制御)の処理を自動化するためにシステム/アプリケーションインターセプトポイントで適用されるプリファレンスをエンドユーザが指定することを可能にするという概念である。パーソナライゼーションは、そのロジックが所与のインターセプトポイント(例えば、イベント、フロー内の点)にローカライズされたプリファレンスをエンドユーザが表現することを可能にすることに関する。単一のプリファレンスのアクションに起因する複数のプリファレンスのカスケードされた評価は、偶発的であり、計画されたものではない。したがって、パーソナライゼーションは、小さい形のワークフローではなく、ワークフローとパーソナライゼーションは、完全に異なるものである。イベントを処理するためのプリファレンスの偶発的カスケードは、ワークフローでのタスク/ルールの計画されたチェーニングと異なる。さらに、パーソナライゼーションは、ワークフローまたはタスクスケジュールが伴うか否かに独立に、電子メール、電話呼び出し、デスクトップ割込み、および他の多数のタイプのエンドユーザイベントに適用することができる。パーソナライズされたワークフローは、パーソナライゼーションが、ワークフローに対する、独立だが相補的な概念であるという前提に基づく。
パーソナライゼーションは、エンドユーザ判断が関係する時にいつでも、ワークフローまたはタスクスケジュールに適用することができる。タスクのパーソナライゼーション、ワークフロー開始のパーソナライゼーション、ワークフロータスクのパーソナライゼーション、およびワークフロースケジューリングのパーソナライゼーションに、ワークフローのパーソナライゼーションの様々な機会がある。タスクのパーソナライゼーションの例が、ユーザが、ある人の直接レポートによるある金額の注文の自動承認などのタスクの処理を自動化するための判断ロジックを指定する場合である。ワークフロー開始は、関心をもたれたイベント(例えば、電話呼び出し、電子メール到着)に基づくワークフローのオープン/開始の判断を扱う。計画されたパーソナライゼーションは、潜在的に、追跡されるスケジュールなどと相互作用する適当な能力によってラップすることによってワークフロータスクにすることができる。言い換えると、パーソナライゼーションは、ワークフロー内で計画されたタスクとして使用することができ、ここで、ユーザプリファレンスが、タスクの解決を完全に決定する。最後に、パーソナライゼーションは、ワークフロースケジューリングに用いることができる。ワークフローの次のステップに関する選択が存在する場合に、パーソナライゼーションを使用して、ユーザがそのような判断のプリファレンスを指定できるようにすることができる。
上記のカテゴリのうちの多数を含むパーソナライズされたワークフローの実用的な例を、出費レポートの処理とすることができる。この例では、電子メールが、inboxに到着し、電子メールのタイプが、検出され(例えば、件名行、出費レポートとしてフラグを立てられるなど)、電子メールデータが、スキャンされ、インボイス額がある金額未満である場合に、レポートが、承認済みフォルダに移動される。その後、レポート承認済み状況を示す電子メールを、送信者に送り返すことができる。その後、ユーザによる月次再検討のためにジャーナルを作成することができ、承認された総額を記録することができる。
ワークフローのパーソナライゼーションの上のカテゴリのすべてが、ワークフローの価値を高めるが、そのような利益の適用可能性は、ワークフローに制限されない。これらの利益は、通信処理、ルーティング、またはパーソナライゼーションを含むがこれに制限されない多数の他のドメインに適用することができ、そのようなドメインは、ワークフローに参加しない場合がある。
クロニクルフォルダ
本発明の態様によるクロニクルは、システムの1人または複数のユーザに関係するヒストリ情報およびコンテキスト情報を表す。通知システムに、しばしば、前のアクションに基づいてあるアクションンを行うか否かの評価の一部として使用できるヒストリカルデータという概念が含まれる。例えば、ユーザが、「notify me when shares of MSFT hit a new high for the day(MSFTの株がその日の新高値をつけた場合に通知せよ)」というプリファレンスをセットアップすることを望む場合がある。この場合に、システムは、1日中MSFT株の最高価格点を維持し、新高値に達した場合にこの情報を更新することができる。
本発明の態様によれば、クロニクルは、データストアに保管され、ユーザインターフェース(例えば、オペレーティングシステムによって供給される)を介して、ユーザが自由にアクセス可能である。したがって、エンドユーザは、このヒストリカルデータに対する制御を有し;他のファイルをバックアップする途中でバックアップすることができ、家庭またはオフィスの他のコンピュータと同期化することができ、普通のファイル共有機構を介して共有することができ、このコンテキスト情報に正確に誰がアクセスできるかを制御するためにアクセス許可および他のセキュリティセッティングをセットすることができる。例えば、ユーザは、自分のワークグループの誰もがこのMSFT株価に関するヒストリカル情報を見ることを許可することができるが、そのユーザが自分の机にいるか会議中であるなどのコンテキスト情報を制限することを望むことができる。
さらに、本発明のシステムは、「監査」クロニクルを作成する能力を含む、「組み込み」クロニクル作成/維持ロジックとして、ある共通の挙動を公開することができ、ユーザの代わりに行われるすべてのアクションが、クロニクルに保管され、このクロニクルは、システムが見た特定の種類のイベントまたはアクションの個数のカウントを保存する「カウント」クロニクルと;ある時間期間にわたるヒストリカルな最高値および最低値を追跡できる「高低ウォーターマーク」クロニクルである。
さらに、本発明は、これらのクロニクルを、情報エージェントアプリケーションについて何も知らないアプリケーションによって更新することを可能にすることができる。多数の通知プラットフォームが、ユーザルール(本明細書ではプリファレンスとも呼ぶ)の普通の処理中にコンテキスト情報を更新することを可能にするが、本発明は、ルール処理またはプリファレンス処理の一部として、データストアに保管された図式化されたデータを使用するので、このシステムは、すべてのアプリケーションによって作成されたコンテキスト情報を使用することができる。例えば、ユーザは、リアルタイム株式市況をユーザコンピュータにストリーミングする、NASDAQによって記述されたアプリケーションをダウンロードし、実行することができる。NASDAQアプリケーションは、シンボルごとにファイルを作成することができ、ユーザは、これらのファイルの中の関連情報に関心を持ち、保存する。本発明の情報エージェントアプリケーションは、一態様によれば、このタイプの外部化されたコンテキスト情報を使用するように作られるので、情報エージェントシステムは、ルール処理またはプリファレンス処理中に、クロニクルとしてこれらのファイルを利用することができる。
クロニクルは、アクティブフォルタと共に使用することもできる。パーソナライズされたフォルダシステムに、特定のフォルダを監視する能力が含まれるので、そのようなフォルダで作成され、変更され、またはそこに移動されるフォルダアイテムを、特定のクロニクルまたはクロニクルのセットに対するコンテキスト更新として扱うことができる。この形で、ユーザが、彼らの代わりにプログラマが記述したコードを実行することなく、クロニクルを維持することが可能になる。そうではなく、エンドユーザは、単に、オペレーティングシステムの既存のファイル操作機構を使用して、彼らのコンテキスト情報を最新状態に保つことができる。
したがって、本発明は、ソフトウェア、ファームウェア、ハードウェア、またはこれらの組合せを作る標準的なプログラミング技法および/またはエンジニアリング技法を使用する方法、装置、または製造品として実施することができる。本明細書で使用される用語「製造品」(またはその代わりに「コンピュータプログラム製品」)は、すべてのコンピュータ可読デバイス、担体、またはメディアからアクセス可能なコンピュータプログラムを含むことが意図されている。もちろん、当業者は、本発明の範囲から逸脱せずに、この構成に対して多数の変更を行えることを理解するであろう。
上で説明した例示的システムに鑑みて、本発明に従って実施できる方法論は、図36から41の流れ図に関してよりよく諒解される。説明を単純にするために、この方法論を、一連のブロックとして図示し、説明するが、本発明によれば、一部のブロックを、図示し、本明細書で説明するものと異なる順序でおよび/または他のブロックと同時に実行できるので、本発明が、ブロックの順序によって制限されないことを理解し、諒解されたい。さらに、示されたブロック動作のいずれかが、本発明による方法論の実施に必要ではない可能性がある。
図36を見ると、本発明の態様による、プリファレンスを使用する方法論3600が示されている。3610で、プリファレンスが、エンドユーザによって、例えば開発者スキーマ(例えば、XMLスキーマ)に基づいて指定され、データストアのテーブルに保管される。次に、3620で、1つまたは複数のイベントを、受け取るか検出することができる。次に、3630で、プリファレンスを実行するか評価し、クエリ言語(例えば、SQL)を使用して、データテーブルを照会することができる。3640で、結果テーブルを作るか、有効な条件的に有効なプリファレンスを取り込む。最後に、3650で、結果テーブルの結果に基づいてめいめいのアクションを実行することができる。
図37を見ると、本発明の態様による、アプリケーションをインストールする方法論3700が示されている。3710で、インストールされるアプリケーションを実行するシステムまたはプラットフォームに関連するデータストア(例えば、情報エージェントシステムデータストア150)内で基礎テーブルをセットアップする。その後、3720で、インストールされるアプリケーションについて厳密に新しいテーブルおよびデータベースを作成するのではなく、アプリケーションデータを用いて基礎テーブルを更新する。3730で、例えば、アプリケーションプロシージャ用に指定されたベースドテーブル内に、データとしてアプリケーションプロシージャを保管する。実行するために、テキストのアプリケーションプロシージャストリングが、データベースから除去され、一態様に従ってリアルタイムで実行される。
図38に、本発明の態様によるアプリケーションを拡張する方法論3800を示す。3810で、開発者からEDFを受け取る。EDFに、あるアプリケーションのプリファレンスクラスが他のアプリケーションで定義された条件、アクション、およびイベントを参照できるようにすることに関連する情報が含まれる。その後、3820で、機能バインディングを、インスタンスレジストリなどの中央位置で登録する。3830で、拡張コンポーネントが、バインディング情報を取り出すか受け取る。その後、3840で、受入ロジックを、バインディングに適用することができる。EDFがインストールされる場合に、バインディングが使用可能にされるが、これらは、本発明の一態様によれば、アプリケーションに自動的には適用されない。そうではなく、受入ロジックを適用して、EDFを受け入れるかどうかを判定する。受入ロジックは、受け入れるかどうかを判定するために、なかんずく、バインディングの真正性、許可、および/または信頼されるソースによる証明を問い合わせる。3850で、アプリケーションがバインディングを受け入れるかどうかに関する判定が、アプリケーションによって行われる。「no」の場合には、この処理は、バインディングなしで単純に終了する。「yes」の場合に、3860で、候補機能バインディングを、第1アプリケーションから第2アプリケーションにバインドする。
図39は、本発明の態様によるアプリケーションのアンインストールの方法論3900を示す流れ図である。3910で、アンインストールされるアプリケーションが、そのすべての登録を中央ストア位置から除去する。中央ストレージ位置は、定義レジストリおよびバインディングレジストリを有するインスタンスレジストリとすることができる。3920で、アプリケーションコンポーネントを除去することができる。依存アプリケーションに、アンインストールされたアプリケーションについて通知することができる(例えば、拡張コンポーネントによって)。さらに、上で注記したように、方法論3900のブロックを、任意の順序にすることができる。したがって、本発明のもう1つの態様に、アンインストールプロセスまたは除去プロセスの前に依存アプリケーションに通知することが含まれる。
図40は、本発明の態様によるアプリケーションにまたがるプログラム的定数の拡張の方法を示す流れ図である。4010で、定数を受け取る。4020で、アプリケーションドメインにまたがる検索によって、定数の値を決定する。例えば、定数MyManagerが受け取られる場合に、この方法論は、電子メールアプリケーションを介して検索し、MyManagerの値を決定することができる。
図41に、本発明の態様によるコンピュータ機能性をパーソナライズする方法論4100を示す。4110で、エンドユーザが、提供されたスキーマに従って、プリファレンスを記述する。プリファレンスは、任意の形とすることができるが、本発明の一態様によれば、プリファレンスに、Boolean演算子によって区切られた複数のIF−THENステートメントが含まれる。スキーマは、エンドユーザプログラミングを制約し、これによって単純にするために、アプリケーション開発者が提供することができる。4120で、イベントの発生時にプリファレンスを実行する。イベントは、フォルダデータの変化または株価の変化を含むがこれに制限されない、発生するすべてのこととすることができる。プリファレンスの実行または評価は、データストアコンポーネント内のデータを照会することによる使用によって行うことができる。4120で、条件的に有効なプリファレンスに基づいてアクションを行う。
本発明の様々な態様のコンテキストを提供するために、図42および43ならびに次の議論は、本発明の様々な態様を実施できる適切なコンピューティング環境の短い全般的な説明を提供することを意図されたものである。本発明を、上で、1つのコンピュータおよび/または複数のコンピュータで動作するコンピュータプログラムのコンピュータ実行可能命令の全般的な文脈で説明したが、本発明を、他のプログラムモジュールと組み合わせて実施することもできることを、当業者は理解するであろう。一般に、プログラムモジュールに、特定のタスクを実行し、および/または特定の抽象データ型を実施するルーチン、プログラム、コンポーネント、データ構造などが含まれる。さらに、本発明の方法を、単一プロセッサまたはマルチプロセッサのコンピュータシステム、ミニコンピューティングデバイス、メインフレームコンピュータ、ならびにパーソナルコンピュータ、ハンドヘルドコンピューティングデバイス、マイクロプロセッサベースまたはプログラマブルなコンシューマ電子機器、および類似物を含む、他のコンピュータシステム構成と共に実践できることを、当業者は諒解するであろう。本発明の図示された態様は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される分散コンピューティング環境で実践することもできる。しかし、本発明の、すべてではないにしてもいくつかの態様を、独立型コンピュータで実践することができる。分散コンピューティング環境では、プログラムモジュールを、ローカルとリモートの両方のメモリストレージデバイスに配置することができる。
図42を参照すると、本発明の様々な態様を実施する例示的環境4210に、コンピュータ4212が含まれる。コンピュータ4212に、処理ユニット4214、システムメモリ4216、およびシステムバス4218が含まれる。システムバス4218は、システムメモリ4216を含むがこれに制限されないシステムコンポーネントを処理ユニット4214に結合する。処理ユニット4214は、様々な使用可能なプロセッサのいずれかとすることができる。デュアルマイクロプロセッサおよび他のマルチプロセッサアーキテクチャも、処理ユニット4214として使用することができる。
システムバス4218に、メモリバスまたはメモリコントローラ、周辺バスまたは外部バス、および/または、11ビットバス、Industrial Standard Architecture(ISA)、マイクロチャネルアーキテクチャ(MSA)、Extended ISA(EISA)、Intelligent Drive Electronics(IDE)、VESA Local Bus(VLB)、Peripheral Component Interconnect(PCI)、Universal Serial Bus(USB)、Advanced Graphics Port(AGP)、Personal Computer Memory Card International Associationバス(PCMCIA)、およびSmall Computer Systems Interface(SCSI)を含むがこれに制限されない様々なバスアーキテクチャを使用するローカルバスを含む複数のタイプのバス構造のいずれかとすることができる。
システムメモリ4216に、揮発性メモリ4220および不揮発性メモリ4222が含まれる。スタートアップ中などにコンピュータ4212内の要素の間で情報を転送する基本ルーチンを含む基本入出力システム(BIOS)が、不揮発性メモリ4222に保管される。制限ではなく例として、不揮発性メモリ4222に、読取専用メモリ(ROM)、プログラマブルROM(PROM)、電気的プログラム可能ROM(EPROM)、電気的消去可能ROM(EEPROM)、またはフラッシュメモリを含めることができる。揮発性メモリ4220に、外部キャッシュメモリとして働くランダムアクセスメモリ(RAM)が含まれる。制限ではなく例として、RAMは、synchronous RAM(SRAM)、dynamic RAM(DRAM)、synchronous DRAM(SDRAM)、double data rate SDRAM(DDR SDRAM)、enhanced SDRAM(ESDRAM)、Synchlink DRAM(SLDRAM)、およびdirect Rambus RAM(DRRAM)などの多数の形で入手可能である。
コンピュータ4212に、取外し可能/取外し不能、揮発性/不揮発性のコンピュータストレージメディアも含まれる。図42に、例えば、ディスクストレージ4224を示す。ディスクストレージ4224に、磁気ディスクドライブ、フロッピー(登録商標)ディスクドライブ、テープドライブ、Jazドライブ、Zipドライブ、LS−100ドライブ、フラッシュメモリカード、またはメモリスティックなどのデバイスが含まれるが、これに制限はされない。さらに、ディスクストレージ4224に、他のストレージメディアと別々にまたはこれと組み合わせて、コンパクトディスクROMデバイス(CD−ROM)、CD recordableドライブ(CD−Rドライブ)、CD rewritableドライブ(CD−RWドライブ)またはデジタル多用途ディスクROMドライブ(DVD−ROM)などの光学ディスクドライブを含むがこれに制限されないストレージメディアを含めることができる。システムバス4218へのディスクストレージ4224の接続を容易にするために、インターフェース4226などの取外し可能インターフェースまたは取外し不能インターフェースが、通常は使用される。
図42に、ユーザと、適切なオペレーティング環境4210で説明される基本的なコンピュータリソースとの間の仲介として働くソフトウェアが記載されていることを諒解されたい。そのようなソフトウェアに、オペレーティングシステム4228が含まれる。オペレーティングシステム4228は、ディスクストレージ4224に保管することができるが、コンピュータシステム4212のリソースを制御し、割り当てるように働く。システムアプリケーション4230が、システムメモリ4216またはディスクストレージ4224のいずれかに保管されたプログラムモジュール4232およびプログラムデータ4234を介して、オペレーティングシステム4228によるリソースの管理を利用する。本発明を、様々なオペレーティングシステムまたはオペレーティングシステムの組合せを用いて実施できることを諒解されたい。
ユーザは、入力デバイス4236を介してコンピュータ4212にコマンドまたは情報を入力する。入力デバイス4236に、マウスなどのポインティングデバイス、トラックボール、スタイラス、タッチパッド、キーボード、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナ、TVチューナカード、デジタルカメラ、デジタルビデオカメラ、ウェブカメラ、および類似物が含まれるが、これに制限はされない。これらおよび他の入力デバイスは、インターフェースポート4238を介し、システムバス4218を介して処理ユニット4214に接続される。インターフェースポート4238に、例えば、シリアルポート、パラレルポート、ゲームポート、およびuniversal serial bus(USB)が含まれる。出力デバイス4240は、入力デバイス4236と同一のタイプのポートの一部を使用する。したがって、例えば、USBポートを使用して、コンピュータ4212に入力を供給し、コンピュータ4212から出力デバイス4240に情報を出力することができる。出力アダプタ4242は、出力デバイス4240の中に、モニタ、スピーカ、およびプリンタなど、特殊なアダプタを必要とするいくつかの出力デバイス4240があることを示すために提供される。出力アダプタ4242に、制限ではなく例として、出力デバイス4240とシステムバス4218の間の接続の手段を提供する、ビデオカードおよびサウンドカードが含まれる。リモートコンピュータ4244など、他の出力デバイスおよび/またはデバイスのシステムが、入力機能および出力機能の両方を提供することに留意されたい。
コンピュータ4212は、リモートコンピュータ4244など、1つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク化された環境で動作することができる。リモートコンピュータ4244は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ワークステーション、マイクロプロセッサベースのアプライアンス、ピアデバイス、または他の一般的なネットワークノードおよび類似物とすることができ、通常は、コンピュータ4212に関して説明した要素の多数またはすべてを含む。図を簡単にするために、メモリストレージデバイス4246だけを、リモートコンピュータ4244と共に図示した。リモートコンピュータ4244は、ネットワークインターフェース4248を介して論理的にコンピュータ4212に接続され、次に、通信接続4250を介して物理的に接続される。ネットワークインターフェース4248は、ローカルエリアネットワーク(LAN)および広域ネットワーク(WAN)などの通信ネットワークを含む。LAN技術に、Fiber Distributed Data Interface(FDDI)、Copper Distributed Data Interface(CDDI)、Ethernet(登録商標)/IEEE 1102.3、Token Ring/IEEE 1102.5および類似物が含まれる。WAN技術に、ポイントツーポイントリンク、サービス総合デジタル網(ISDN)およびその変形などの回路交換網、パケット交換網、およびデジタル加入者回線(DSL)が含まれるが、これに制限はされない。
通信接続4250は、ネットワークインターフェース4248をバス4218に接続するのに使用されるハードウェア/ソフトウェアを指す。通信接続4250は、図を明瞭にするためにコンピュータ4212内に示されているが、コンピュータ4212の外部とすることもできる。ネットワークインターフェース4248への接続に必要なハードウェア/ソフトウェアに、例示のみとして、通常の電話等級モデム、ケーブルモデム、およびDSLモデムを含むモデム、IDSNアダプタ、およびイーサネット(登録商標)カードなどの内蔵技術および外付け技術が含まれる。
図43は、本発明が相互作用できるサンプルコンピューティング環境4300の概略ブロック図である。システム4300に、1つまたは複数のクライアント4310が含まれる。クライアント4310は、ハードウェアおよび/またはソフトウェア(例えば、スレッド、プロセス、コンピューティングデバイス)とすることができる。システム4300に、1つまたは複数のサーバ4330も含まれる。サーバ4330も、ハードウェアおよび/またはソフトウェア(例えば、スレッド、プロセス、コンピューティングデバイス)とすることができる。サーバ4330は、例えば本発明を使用することによって変換を実行するスレッドを収容することができる。クライアント4310とサーバ4330の間の1つの可能な通信が、複数のコンピュータプロセスの間で伝送されるように適合されたデータパケットの形である。システム4300に、クライアント4310とサーバ4330の間の通信を容易にするのに使用できる通信フレームワーク4350が含まれる。クライアント4310は、クライアント4310にローカルに情報を保管するのに使用できる1つまたは複数のクライアントデータストア4360に動作可能に接続される。同様に、サーバ4330は、サーバ4330にローカルに情報を保管するのに使用できる1つまたは複数のサーバデータストア4340に動作可能に接続される。
上で説明したものに、本発明の例が含まれる。もちろん、本発明の説明においてコンポーネントまたは方法論のすべての考えられる組合せを記述することは不可能であるが、当業者は、本発明の多数のさらなる組合せおよび置換が可能であることを諒解するであろう。したがって、本発明は、本発明の趣旨および範囲に含まれる、すべてのそのような代替形態、修正形態、および変形形態を含むことが意図されている。さらに、詳細な説明または請求項のいずれかで用語「includes」が使用される範囲まで、そのような用語は、前後を接続する単語が請求項で使用される場合に用語「comprising」が解釈されるのに類似する形で包括的であることが意図されている。
Figure 0004896726
Figure 0004896726
Figure 0004896726
本発明の態様による情報エージェントシステムを示すブロック図である。 本発明の態様による通知コンポーネントを示すブロック図である。 本発明の態様による情報エージェントアプリケーションを示すブロック図である。 本発明の態様による例示的論理スキーマを示すブロック図である。 本発明の態様による定数アクセッサを評価するシステムを示すブロック図である。 本発明の態様によるプリファレンス評価システムを示すブロック図である。 本発明の態様による優先順位システムを示すブロック図である。 本発明の態様によるクラシファイヤを示すブロック図である。 本発明の態様によるメッセージ分類を示す概略ブロック図である。 本発明の態様によるスケーラクラシファイヤ出力を示す概略ブロック図である。 本発明の態様によるクラスおよびスケーラ出力に従って分類されるテキストを示す概略ブロック図である。 本発明の態様による線形優先順位モデルを示す図である。 本発明の態様による非線形優先順位モデルを示す図である。 本発明の態様によるユーザアクティビティを判定するモデルを示す図である。 本発明の態様による現在のユーザアクティビティを判定する推論ベースモデルを示す図である。 本発明の態様による警告コストを判定する推論ベースモデルを示す図である。 本発明の態様による警告コストを判定するより詳細な推論ベースモデルを示す図である。 本発明の態様による忠実度ロスに関する警告コストを判定するより詳細な推論ベースモデルを示す図である。 本発明の態様による優先順位の生成および決定の方法論を示す流れ図である。 本発明の態様によるテキスト生成プログラムおよびクラシファイヤを示す図である。 本発明の態様による実行エンジンとコンテキストアナライザの間のシステマチックな協力を示す概略ブロック図である。 本発明の態様によるコンテキストアナライザを示すブロック図である。 本発明の態様によるソースおよびシンクを示すブロック図である。 経時的にマッピングされた通知の有用性を示すグラフである。 本発明の態様による例示的インターフェースを示す図である。 本発明の態様による直接測定によるユーザコンテキストの判定の方法論を示す図である。 本発明の態様によるコンテキストを判定するルールの例示的な階層順序付きセットを示すブロック図である。 本発明の態様による、ユーザコンテキストを判定するために推論エンジンによって実行される推論分析を示すシステムを示す概略ブロック図である。 本発明の態様による単一時間期間の注意のユーザの注意のフォーカスを推論する例示的ベイジアンネットワークを示す図である。 本発明の態様による異なる時間の期間でのコンテキスト変数の間でのユーザの注意フォーカスのベイジアンモデルを示す図である。 本発明の態様に従って、ユーザのコンテキストがどのように判定されるかを示す流れ図である。 本発明の態様による通知伝達プロセスを示す流れ図である。 本発明の態様によるアクション/条件進化チェーンを示す図である。 本発明の態様によるアプリケーション相互作用のシステムを示すブロック図である。 本発明の態様によるパーソナライズされたシステムを示すブロック図である。 本発明の態様によるプリファレンスを使用する方法論を示す流れ図である。 本発明の態様によるアプリケーションをインストールする方法論を示す流れ図である。 本発明の態様によるアプリケーションを拡張する方法論を示す流れ図である。 本発明の態様によるアプリケーションのアンインストールを示す流れ図である。 本発明の態様によるアプリケーションにまたがるプログラム的定数の拡張の方法を示す流れ図である。 本発明の態様によるコンピュータ機能性をパーソナライズする方法論を示す流れ図である。 本発明の態様による適切なオペレーティング環境を示す概略ブロック図である。 本発明が相互作用できるサンプルコンピューティング環境を示す概略ブロック図である。

Claims (13)

  1. 複数の条件および複数のアクションを保管するデータストアと、
    エンドユーザが、前記複数の条件、前記複数のアクション、およびBoolean演算子を用いて、Boolean演算子によって区切られる1または複数の条件で構成される特定の条件、および当該特定の条件が真と評価される場合に実行される1または複数のアクションを指定するプリファレンスを定義するためのユーザインターフェースと、
    前記エンドユーザが定数を用いて条件を記述したプリファレンスを定義すると、各アプリケーションにおいて、前記定数に対応するメンバが定義されているか否かを解析して、定義されている場合、前記プリファレンスにおける前記定数に前記メンバをリンクするアクセッサコンポーネントと、
    エンドユーザによって定義されたプリファレンスをコンパイルし、前記データストアにさらに保管するコンパイラと、
    1つまたは複数のイベントの発生時に、当該イベントに関連するデータに基づいて、前記データストアに保管されたプリファレンスの前記特定の条件を評価する実行エンジンと を含むことを特徴とするプリファレンス評価システム。
  2. プリファレンスの前記特定の条件が真と評価されるプリファレンスによって指定される1つまたは複数のアクションを行うアクションコンポーネントをさらに含むことを特徴とする請求項1に記載のプリファレンス評価システム。
  3. 前記特定の条件が真と評価されるプリファレンスによって指定される1つまたは複数のアクションは、前記イベントに関連するデータを1つまたは複数のユーザ通信デバイスに通知することであり、
    前記アクションコンポーネントは、前記通信デバイスに応じて前記イベントに関連するデータのフォーマットを変換する通知コンポーネントを含むことを特徴とする請求項2に記載のプリファレンス評価システム。
  4. 前記通信デバイスは、携帯電話機、ポケットベル、PDA、およびコンピュータを含むことを特徴とする請求項3に記載のプリファレンス評価システム。
  5. イベントソースからイベントデータを抽出し、前記イベントデータを前記データストアに保管するイベントコンポーネントをさらに含み、
    前記実行エンジンは、前記イベントデータに基づいて前記プリファレンスの特定の条件を評価することを特徴とする請求項1に記載のプリファレンス評価システム。
  6. 前記イベントコンポーネントは、前記データストアに保管されたイベントデータが所定の基準を満足する場合に、イベントの発生を示すことを特徴とする請求項5に記載のプリファレンス評価システム。
  7. エンドユーザの位置および状態を示すコンテキストデータを作り、前記コンテキストデータを前記データストアに保管するコンテキストアナライザであって、コンテキスト情報ソースに基づいて前記エンドユーザの位置を判定し、日のタイプ、時刻、ユーザのカレンダのデータ、およびユーザのアクティビティに関する情報に基づいて前記エンドユーザの状態を判定する、コンテキストアナライザをさらに含み、前記エンドユーザの状態は、前記特定の条件に使用されることを特徴とする請求項1に記載のプリファレンス評価システム。
  8. 互いに相互作用する複数のアプリケーションのための1つまたは複数のAPIをさらに含むことを特徴とする請求項1に記載のプリファレンス評価システム。
  9. 前記データストアは、プリファレンスの識別子とイベントの識別子とを含むプリファレンステーブル、前記プリファレンスの識別子と、プリファレンスの前記特定の条件を構成する各条件の識別子と、前記複数の条件の識別子とを含む条件テーブル、および前記プリファレンスの識別子と、プリファレンスの前記特定の条件を構成する各条件の識別子と、前記各条件の真偽を示す情報とを含む条件結果テーブルを有し、
    前記実行エンジンは、前記プリファレンステーブルに基づいて特定のイベントに関連付けられているプリファレンスを特定し、前記条件テーブルに基づいて前記特定したプリファレンスの特定の条件を構成する各条件を特定し、前記条件結果テーブルの前記真偽を示す情報に基づいて前記特定したプリファレンスの前記特定の条件を評価することを特徴とする請求項1に記載のプリファレンス評価システム。
  10. 複数の条件および複数のアクションを保管するデータストアを備えたコンピュータにおいて、記憶装置に記憶されたコンピュータ実行可能命令が実行されることにより、
    前記コンピュータが、前記複数の条件、前記複数のアクション、およびBoolean演算子を用いて、Boolean演算子によって区切られる1または複数の条件で構成される特定の条件、および当該特定の条件が真と評価される場合に実行される1または複数のアクションを指定するプリファレンスを定義するためのユーザインターフェースを提供するステップと、
    前記エンドユーザが定数を用いて条件を記述したプリファレンスを定義すると、前記コンピュータが、各アプリケーションにおいて、前記定数に対応するメンバが定義されているか否かを解析して、定義されている場合、前記プリファレンスにおける前記定数に前記メンバをリンクするステップと、
    前記コンピュータが、エンドユーザによって定義されたプリファレンスをコンパイルし、前記データストアにさらに保管するステップと、
    1つまたは複数のイベントの発生時に、前記コンピュータが、当該イベントに関連するデータに基づいて、前記データストアに保管されたプリファレンスの前記特定の条件を評価するステップと
    を含むことを特徴とする方法。
  11. 前記コンピュータが、前記特定の条件が真と評価されるプリファレンスによって指定される1つまたは複数のアクションを実行するステップをさらに含むことを特徴とする請求項10に記載の方法。
  12. 前記コンピュータが、前記ユーザインターフェースを介して定義されたプリファレンスに基づいて前記データストアに、プリファレンスの識別子とイベントの識別子とを含むプリファレンステーブル、および前記プリファレンスの識別子と、プリファレンスの前記特定の条件を構成する各条件の識別子と、前記複数の条件の識別子とを含む条件テーブルを生成するステップと、
    イベントの発生時に、前記コンピュータが、前記プリファレンステーブルに基づいて当該イベントに関連付けられているプリファレンスを特定し、前記条件テーブルに基づいて前記特定したプリファレンスの特定の条件を構成する各条件を特定するステップと、
    前記コンピュータが、前記特定したプリファレンスの識別子と、前記特定したプリファレンスの前記特定の条件を構成する各条件の識別子と、前記各条件の真偽を示す情報とを含む条件結果テーブルを生成するステップであって、前記各条件の真偽は前記イベントに関連するデータに基づいて評価される、ステップと
    を含み、前記コンピュータは、前記条件結果テーブルの前記真偽を示す情報に基づいて前記特定したプリファレンスの前記特定の条件を評価することを特徴とする請求項10に記載の方法。
  13. 請求項10に記載の前記コンピュータ実行可能命令を記憶した前記記憶装置
JP2006536575A 2003-10-24 2004-07-27 プリファレンスの条件の評価に基づいてアクションを実行するためのシステム、方法および記憶装置 Expired - Fee Related JP4896726B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/693,735 US7669177B2 (en) 2003-10-24 2003-10-24 System and method for preference application installation and execution
US10/693,735 2003-10-24
PCT/US2004/024139 WO2005045740A2 (en) 2003-10-24 2004-07-27 System and method for preference application installation and execution

Publications (2)

Publication Number Publication Date
JP2007518151A JP2007518151A (ja) 2007-07-05
JP4896726B2 true JP4896726B2 (ja) 2012-03-14

Family

ID=34522466

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006536575A Expired - Fee Related JP4896726B2 (ja) 2003-10-24 2004-07-27 プリファレンスの条件の評価に基づいてアクションを実行するためのシステム、方法および記憶装置

Country Status (16)

Country Link
US (1) US7669177B2 (ja)
EP (1) EP1646961A4 (ja)
JP (1) JP4896726B2 (ja)
KR (1) KR101103949B1 (ja)
CN (1) CN101142549A (ja)
AU (1) AU2004279183B2 (ja)
BR (1) BRPI0406520A (ja)
CA (1) CA2507255C (ja)
IL (1) IL169411A (ja)
MX (1) MXPA05006966A (ja)
NO (1) NO20052547L (ja)
NZ (1) NZ540876A (ja)
RU (1) RU2364917C2 (ja)
TW (1) TWI388995B (ja)
WO (1) WO2005045740A2 (ja)
ZA (1) ZA200505253B (ja)

Families Citing this family (271)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6714967B1 (en) * 1999-07-30 2004-03-30 Microsoft Corporation Integration of a computer-based message priority system with mobile electronic devices
US8645137B2 (en) 2000-03-16 2014-02-04 Apple Inc. Fast, language-independent method for user authentication by voice
US7698276B2 (en) * 2002-06-26 2010-04-13 Microsoft Corporation Framework for providing a subscription based notification system
US20040002958A1 (en) 2002-06-26 2004-01-01 Praveen Seshadri System and method for providing notification(s)
US20050136903A1 (en) * 2003-12-18 2005-06-23 Nokia Corporation Context dependent alert in a portable electronic device
US7162223B2 (en) * 2004-02-17 2007-01-09 Teamon Systems, Inc. System and method for notifying users of an event using alerts
US20050235292A1 (en) * 2004-04-15 2005-10-20 Tillotson Timothy N Client program grammar derivation from application programming interface (API) calls and associated metadata
US7395244B1 (en) * 2004-06-23 2008-07-01 Symantec Corporation Criticality classification system and method
US10748158B2 (en) * 2004-10-08 2020-08-18 Refinitiv Us Organization Llc Method and system for monitoring an issue
US20060155716A1 (en) * 2004-12-23 2006-07-13 Microsoft Corporation Schema change governance for identity store
US7529931B2 (en) * 2004-12-23 2009-05-05 Microsoft Corporation Managing elevated rights on a network
US7607164B2 (en) 2004-12-23 2009-10-20 Microsoft Corporation Systems and processes for managing policy change in a distributed enterprise
US7540014B2 (en) 2005-02-23 2009-05-26 Microsoft Corporation Automated policy change alert in a distributed enterprise
US8677377B2 (en) 2005-09-08 2014-03-18 Apple Inc. Method and apparatus for building an intelligent automated assistant
US10825029B2 (en) 2005-09-09 2020-11-03 Refinitiv Us Organization Llc Subscription apparatus and method
US7738887B2 (en) * 2005-10-31 2010-06-15 Microsoft Corporation Voice instant messaging between mobile and computing devices
US8010701B2 (en) * 2005-12-19 2011-08-30 Vmware, Inc. Method and system for providing virtualized application workspaces
US8935429B2 (en) * 2006-12-19 2015-01-13 Vmware, Inc. Automatically determining which remote applications a user or group is entitled to access based on entitlement specifications and providing remote application access to the remote applications
US20070283329A1 (en) * 2006-01-09 2007-12-06 Infosys Technologies, Ltd. System and method for performance monitoring and diagnosis of information technology system
US20070226734A1 (en) * 2006-03-03 2007-09-27 Microsoft Corporation Auxiliary display gadget for distributed content
US20070250365A1 (en) * 2006-04-21 2007-10-25 Infosys Technologies Ltd. Grid computing systems and methods thereof
US8131696B2 (en) * 2006-05-19 2012-03-06 Oracle International Corporation Sequence event processing using append-only tables
US8762395B2 (en) 2006-05-19 2014-06-24 Oracle International Corporation Evaluating event-generated data using append-only tables
US9110934B2 (en) * 2006-06-02 2015-08-18 International Business Machines Corporation System and method for delivering an integrated server administration platform
US20070292833A1 (en) * 2006-06-02 2007-12-20 International Business Machines Corporation System and Method for Creating, Executing and Searching through a form of Active Web-Based Content
US20070288274A1 (en) * 2006-06-05 2007-12-13 Tian Jy Chao Environment aware resource capacity planning for service delivery
US20070282653A1 (en) * 2006-06-05 2007-12-06 Ellis Edward Bishop Catalog based services delivery management
US20070282470A1 (en) * 2006-06-05 2007-12-06 International Business Machines Corporation Method and system for capturing and reusing intellectual capital in IT management
US8001068B2 (en) * 2006-06-05 2011-08-16 International Business Machines Corporation System and method for calibrating and extrapolating management-inherent complexity metrics and human-perceived complexity metrics of information technology management
US20070282645A1 (en) * 2006-06-05 2007-12-06 Aaron Baeten Brown Method and apparatus for quantifying complexity of information
US20070282776A1 (en) * 2006-06-05 2007-12-06 International Business Machines Corporation Method and system for service oriented collaboration
US8468042B2 (en) * 2006-06-05 2013-06-18 International Business Machines Corporation Method and apparatus for discovering and utilizing atomic services for service delivery
US7877284B2 (en) * 2006-06-05 2011-01-25 International Business Machines Corporation Method and system for developing an accurate skills inventory using data from delivery operations
US8554596B2 (en) * 2006-06-05 2013-10-08 International Business Machines Corporation System and methods for managing complex service delivery through coordination and integration of structured and unstructured activities
US8412561B2 (en) * 2006-08-09 2013-04-02 Infosys Technologies, Ltd. Business case evaluation system and methods thereof
US7966599B1 (en) 2006-08-29 2011-06-21 Adobe Systems Incorporated Runtime library including a virtual file system
US9318108B2 (en) 2010-01-18 2016-04-19 Apple Inc. Intelligent automated assistant
US7672240B2 (en) * 2006-12-14 2010-03-02 Sun Microsystems, Inc. Method and system for using Bayesian network inference for selection of transport protocol algorithm
US20080282205A1 (en) * 2007-02-06 2008-11-13 Access Systems Americas, Inc. Unified launcher user interface system and method for integrating multiple disparate environments on an electronic device
US8627211B2 (en) 2007-03-30 2014-01-07 Uranus International Limited Method, apparatus, system, medium, and signals for supporting pointer display in a multiple-party communication
US7765266B2 (en) 2007-03-30 2010-07-27 Uranus International Limited Method, apparatus, system, medium, and signals for publishing content created during a communication
US7950046B2 (en) 2007-03-30 2011-05-24 Uranus International Limited Method, apparatus, system, medium, and signals for intercepting a multiple-party communication
US8702505B2 (en) 2007-03-30 2014-04-22 Uranus International Limited Method, apparatus, system, medium, and signals for supporting game piece movement in a multiple-party communication
US8060887B2 (en) 2007-03-30 2011-11-15 Uranus International Limited Method, apparatus, system, and medium for supporting multiple-party communications
US7765261B2 (en) 2007-03-30 2010-07-27 Uranus International Limited Method, apparatus, system, medium and signals for supporting a multiple-party communication on a plurality of computer servers
US8019812B2 (en) * 2007-04-13 2011-09-13 Microsoft Corporation Extensible and programmable multi-tenant service architecture
US7930676B1 (en) * 2007-04-27 2011-04-19 Intuit Inc. System and method for adapting software elements based on mood state profiling
US20080275894A1 (en) * 2007-05-03 2008-11-06 Motorola, Inc. Content item apparatus and method of operation therefor
US20090063266A1 (en) * 2007-09-04 2009-03-05 Microsoft Corporation Performing of marketing actions while preserving confidentiality
US20090089039A1 (en) * 2007-10-01 2009-04-02 Ilan Shufer System and method of emulating functionality of a web service
TWI416343B (zh) * 2007-10-05 2013-11-21 Chi Mei Comm Systems Inc 人機介面功能群組定制系統及方法
US10002189B2 (en) 2007-12-20 2018-06-19 Apple Inc. Method and apparatus for searching using an active ontology
US9330720B2 (en) 2008-01-03 2016-05-03 Apple Inc. Methods and apparatus for altering audio output signals
US8341598B2 (en) * 2008-01-18 2012-12-25 Microsoft Corporation Declartive commands using workflows
US8271951B2 (en) * 2008-03-04 2012-09-18 International Business Machines Corporation System and methods for collecting software development feedback
US8996376B2 (en) 2008-04-05 2015-03-31 Apple Inc. Intelligent text-to-speech conversion
US8819266B2 (en) * 2008-05-22 2014-08-26 Hartford Fire Insurance Company Dynamic file transfer scheduling and server messaging
US20090300525A1 (en) * 2008-05-27 2009-12-03 Jolliff Maria Elena Romera Method and system for automatically updating avatar to indicate user's status
US20100030549A1 (en) 2008-07-31 2010-02-04 Lee Michael M Mobile device having human language translation capability with positional feedback
US8676904B2 (en) 2008-10-02 2014-03-18 Apple Inc. Electronic devices with voice command and contextual data processing capabilities
KR101533821B1 (ko) * 2008-10-31 2015-07-10 삼성전자 주식회사 통신 툴을 추천하는 통신 시스템, 서버, 단말 및 이를 이용한 통신 방법
US9489185B2 (en) * 2009-01-29 2016-11-08 At&T Mobility Ii Llc Small/medium business application delivery platform
US8204717B2 (en) * 2009-04-01 2012-06-19 Honeywell International Inc. Cloud computing as a basis for equipment health monitoring service
US9412137B2 (en) * 2009-04-01 2016-08-09 Honeywell International Inc. Cloud computing for a manufacturing execution system
US20100306591A1 (en) * 2009-06-01 2010-12-02 Murali Mallela Krishna Method and system for performing testing on a database system
US10241644B2 (en) 2011-06-03 2019-03-26 Apple Inc. Actionable reminder entries
US10241752B2 (en) 2011-09-30 2019-03-26 Apple Inc. Interface for a virtual digital assistant
US9431006B2 (en) 2009-07-02 2016-08-30 Apple Inc. Methods and apparatuses for automatic speech recognition
US8316125B2 (en) * 2009-08-31 2012-11-20 Red Hat, Inc. Methods and systems for automated migration of cloud processes to external clouds
US8234524B1 (en) * 2009-09-28 2012-07-31 Dale Trenton Smith Protocol analysis with event present flags
US10276170B2 (en) 2010-01-18 2019-04-30 Apple Inc. Intelligent automated assistant
US8682667B2 (en) 2010-02-25 2014-03-25 Apple Inc. User profiling for selecting user specific voice input processing information
US8863171B2 (en) 2010-06-14 2014-10-14 Sony Corporation Announcement of program synchronized triggered declarative objects
US9020871B2 (en) 2010-06-18 2015-04-28 Microsoft Technology Licensing, Llc Automated classification pipeline tuning under mobile device resource constraints
JP6230060B2 (ja) * 2010-08-16 2017-11-15 シズベル ソチエタ イタリアーナ ペル ロ ズヴィルッポ デルエレットロニカ エッセ ピ ア 少なくとも1つのメディアアイテムを選択するための方法及び装置
JP5621422B2 (ja) * 2010-09-07 2014-11-12 ソニー株式会社 情報処理装置、プログラム及び制御方法
US10209967B2 (en) 2010-10-18 2019-02-19 Infosys Technologies Ltd. System and method for detecting preventative maintenance operations in computer source code
US8856807B1 (en) * 2011-01-04 2014-10-07 The Pnc Financial Services Group, Inc. Alert event platform
US11055754B1 (en) 2011-01-04 2021-07-06 The Pnc Financial Services Group, Inc. Alert event platform
US9262612B2 (en) 2011-03-21 2016-02-16 Apple Inc. Device access using voice authentication
RU2464727C1 (ru) * 2011-03-25 2012-10-20 Общество С Ограниченной Ответственностью "Аилайн Кэмьюникейшнс Снг" Способ предоставления информации при проведении распределенных транзакций и комплекс для его осуществления
US8649995B2 (en) 2011-04-07 2014-02-11 Infosys Technologies, Ltd. System and method for efficient test case generation using input dependency information
DE112011105082T5 (de) 2011-04-21 2014-06-26 Hewlett-Packard Development Company, L.P. Installieren einer Anwendung in eine visualisierte Umgebung
US10057736B2 (en) 2011-06-03 2018-08-21 Apple Inc. Active transport based notifications
US20130067365A1 (en) * 2011-09-13 2013-03-14 Microsoft Corporation Role based user interface for limited display devices
EP3392876A1 (en) * 2011-09-30 2018-10-24 Apple Inc. Using context information to facilitate processing of commands in a virtual assistant
US20130097660A1 (en) * 2011-10-17 2013-04-18 Mcafee, Inc. System and method for whitelisting applications in a mobile network environment
US8806422B2 (en) * 2011-10-27 2014-08-12 Sap Ag Impact analysis and adoption planning based on global where-used lists
KR101521332B1 (ko) * 2011-11-08 2015-05-20 주식회사 다음카카오 인스턴트 메시징 서비스 및 인스턴트 메시징 서비스로부터 확장된 복수의 서비스들을 제공하는 방법
US20130179791A1 (en) * 2011-12-16 2013-07-11 Webotics Inc. System and method for real-time data in a graphical user interface
US10134385B2 (en) 2012-03-02 2018-11-20 Apple Inc. Systems and methods for name pronunciation
US9152784B2 (en) 2012-04-18 2015-10-06 Mcafee, Inc. Detection and prevention of installation of malicious mobile applications
US9280610B2 (en) 2012-05-14 2016-03-08 Apple Inc. Crowd sourcing information to fulfill user requests
US10417037B2 (en) 2012-05-15 2019-09-17 Apple Inc. Systems and methods for integrating third party services with a digital assistant
CN103428174A (zh) * 2012-05-17 2013-12-04 云联(北京)信息技术有限公司 一种基于云计算的互动体感游戏的实现方法
US10671955B2 (en) * 2012-06-05 2020-06-02 Dimensional Insight Incorporated Dynamic generation of guided pages
US9721563B2 (en) 2012-06-08 2017-08-01 Apple Inc. Name recognition system
US8751500B2 (en) 2012-06-26 2014-06-10 Google Inc. Notification classification and display
US9207703B1 (en) * 2012-06-28 2015-12-08 Emc Corporation Method and apparatus for client application customization
CN102790981B (zh) * 2012-06-29 2015-04-22 石化盈科信息技术有限责任公司 传感器网络时空动态模式下的实时报警方法
US9547647B2 (en) 2012-09-19 2017-01-17 Apple Inc. Voice-based media searching
US8719280B1 (en) 2012-10-16 2014-05-06 Google Inc. Person-based information aggregation
US9282587B2 (en) 2012-11-16 2016-03-08 Google Technology Holdings, LLC Method for managing notifications in a communication device
WO2014090982A1 (en) * 2012-12-14 2014-06-19 Telefonaktiebolaget L M Ericsson (Publ) Systems, methods, and computer program products for a software build and load process using a compilation and deployment service
DE112014000709B4 (de) 2013-02-07 2021-12-30 Apple Inc. Verfahren und vorrichtung zum betrieb eines sprachtriggers für einen digitalen assistenten
US9582608B2 (en) 2013-06-07 2017-02-28 Apple Inc. Unified ranking with entropy-weighted information for phrase-based semantic auto-completion
WO2014197334A2 (en) 2013-06-07 2014-12-11 Apple Inc. System and method for user-specified pronunciation of words for speech synthesis and recognition
WO2014197335A1 (en) 2013-06-08 2014-12-11 Apple Inc. Interpreting and acting upon commands that involve sharing information with remote devices
US10176167B2 (en) 2013-06-09 2019-01-08 Apple Inc. System and method for inferring user intent from speech inputs
EP3937002A1 (en) 2013-06-09 2022-01-12 Apple Inc. Device, method, and graphical user interface for enabling conversation persistence across two or more instances of a digital assistant
US9715406B2 (en) * 2013-06-14 2017-07-25 Microsoft Technology Licensing, Llc Assigning and scheduling threads for multiple prioritized queues
RU2013134408A (ru) * 2013-07-23 2015-01-27 Общество с ограниченной ответственностью "ГлобалЛаб" Система мониторинга параметров жизнедеятельности в географически локализованной зоне с функцией санкционированного доступа третьих лиц к результатам мониторинга
US10679185B2 (en) * 2013-08-23 2020-06-09 Synabee, Inc. Personal attribute cartography with analysis feedback
CN105745585B (zh) 2013-11-26 2018-05-08 西门子公司 卸载人机交互任务
US10296160B2 (en) 2013-12-06 2019-05-21 Apple Inc. Method for extracting salient dialog usage from live data
US9581698B2 (en) * 2014-02-03 2017-02-28 Honeywell International Inc. Systems and methods to monitor for false alarms from ionosphere gradient monitors
US9661653B2 (en) 2014-05-08 2017-05-23 Intel IP Corporation Device to-device (D2D) communications
US20150348126A1 (en) * 2014-05-30 2015-12-03 Transilio, Inc. Personalized user engagement system using operating system notification script
US10170123B2 (en) 2014-05-30 2019-01-01 Apple Inc. Intelligent assistant for home automation
US9430463B2 (en) 2014-05-30 2016-08-30 Apple Inc. Exemplar-based natural language processing
US9715875B2 (en) 2014-05-30 2017-07-25 Apple Inc. Reducing the need for manual start/end-pointing and trigger phrases
TWI566107B (zh) 2014-05-30 2017-01-11 蘋果公司 用於處理多部分語音命令之方法、非暫時性電腦可讀儲存媒體及電子裝置
US9633004B2 (en) 2014-05-30 2017-04-25 Apple Inc. Better resolution when referencing to concepts
US9338493B2 (en) 2014-06-30 2016-05-10 Apple Inc. Intelligent automated assistant for TV user interactions
US9894009B2 (en) * 2014-08-29 2018-02-13 Microsoft Technology Licensing, Llc Client device and host device subscriptions
KR102373337B1 (ko) 2014-09-02 2022-03-11 애플 인크. 가변 햅틱 출력을 위한 시맨틱 프레임워크
US9818400B2 (en) 2014-09-11 2017-11-14 Apple Inc. Method and apparatus for discovering trending terms in speech requests
US9668121B2 (en) 2014-09-30 2017-05-30 Apple Inc. Social reminders
US10127911B2 (en) 2014-09-30 2018-11-13 Apple Inc. Speaker identification and unsupervised speaker adaptation techniques
US10074360B2 (en) 2014-09-30 2018-09-11 Apple Inc. Providing an indication of the suitability of speech recognition
WO2016128491A1 (en) 2015-02-11 2016-08-18 British Telecommunications Public Limited Company Validating computer resource usage
GB2535710A (en) * 2015-02-24 2016-08-31 Siemens Ag Computer device and method for detecting correlations within data
US10200486B2 (en) 2015-02-26 2019-02-05 Urban Airship, Inc. Mobile event notifications for network enabled objects
US10084865B2 (en) 2015-02-26 2018-09-25 Urban Airship, Inc. Mobile event notifications
US10152299B2 (en) 2015-03-06 2018-12-11 Apple Inc. Reducing response latency of intelligent automated assistants
US10567477B2 (en) 2015-03-08 2020-02-18 Apple Inc. Virtual assistant continuity
US9886953B2 (en) 2015-03-08 2018-02-06 Apple Inc. Virtual assistant activation
US9721566B2 (en) 2015-03-08 2017-08-01 Apple Inc. Competing devices responding to voice triggers
US9311083B1 (en) * 2015-04-10 2016-04-12 CypressX LLC Machine interface configuration system for coerced inconsistencies on different machine platforms
US10460227B2 (en) 2015-05-15 2019-10-29 Apple Inc. Virtual assistant in a communication session
US9768974B1 (en) * 2015-05-18 2017-09-19 Google Inc. Methods, systems, and media for sending a message about a new video to a group of related users
US10083688B2 (en) 2015-05-27 2018-09-25 Apple Inc. Device voice control for selecting a displayed affordance
US9578173B2 (en) 2015-06-05 2017-02-21 Apple Inc. Virtual assistant aided communication with 3rd party service in a communication session
US11025565B2 (en) 2015-06-07 2021-06-01 Apple Inc. Personalized prediction of responses for instant messaging
US20160378747A1 (en) 2015-06-29 2016-12-29 Apple Inc. Virtual assistant for media playback
CN105094900A (zh) * 2015-07-13 2015-11-25 小米科技有限责任公司 一种下载控制程序的方法及装置
US11347876B2 (en) 2015-07-31 2022-05-31 British Telecommunications Public Limited Company Access control
WO2017021153A1 (en) 2015-07-31 2017-02-09 British Telecommunications Public Limited Company Expendable access control
WO2017021155A1 (en) 2015-07-31 2017-02-09 British Telecommunications Public Limited Company Controlled resource provisioning in distributed computing environments
US10747498B2 (en) 2015-09-08 2020-08-18 Apple Inc. Zero latency digital assistant
US10671428B2 (en) 2015-09-08 2020-06-02 Apple Inc. Distributed personal assistant
US10366158B2 (en) 2015-09-29 2019-07-30 Apple Inc. Efficient word encoding for recurrent neural network language models
US11010550B2 (en) 2015-09-29 2021-05-18 Apple Inc. Unified language modeling framework for word prediction, auto-completion and auto-correction
US11587559B2 (en) 2015-09-30 2023-02-21 Apple Inc. Intelligent device identification
US10104051B2 (en) 2015-10-27 2018-10-16 Airwatch Llc Searching content associated with multiple applications
US9952953B2 (en) 2015-11-02 2018-04-24 Microsoft Technology Licensing Llc Non-monotonic eventual convergence for desired state configuration
US10691473B2 (en) 2015-11-06 2020-06-23 Apple Inc. Intelligent automated assistant in a messaging environment
US10049668B2 (en) 2015-12-02 2018-08-14 Apple Inc. Applying neural network language models to weighted finite state transducers for automatic speech recognition
US10223066B2 (en) 2015-12-23 2019-03-05 Apple Inc. Proactive assistance based on dialog communication between devices
US10446143B2 (en) 2016-03-14 2019-10-15 Apple Inc. Identification of voice inputs providing credentials
US11159549B2 (en) 2016-03-30 2021-10-26 British Telecommunications Public Limited Company Network traffic threat identification
US11023248B2 (en) 2016-03-30 2021-06-01 British Telecommunications Public Limited Company Assured application services
EP3437007B1 (en) 2016-03-30 2021-04-28 British Telecommunications public limited company Cryptocurrencies malware based detection
US11194901B2 (en) 2016-03-30 2021-12-07 British Telecommunications Public Limited Company Detecting computer security threats using communication characteristics of communication protocols
US11153091B2 (en) 2016-03-30 2021-10-19 British Telecommunications Public Limited Company Untrusted code distribution
US9934775B2 (en) 2016-05-26 2018-04-03 Apple Inc. Unit-selection text-to-speech synthesis based on predicted concatenation parameters
US9972304B2 (en) 2016-06-03 2018-05-15 Apple Inc. Privacy preserving distributed evaluation framework for embedded personalized systems
US11227589B2 (en) 2016-06-06 2022-01-18 Apple Inc. Intelligent list reading
US10249300B2 (en) 2016-06-06 2019-04-02 Apple Inc. Intelligent list reading
US10049663B2 (en) 2016-06-08 2018-08-14 Apple, Inc. Intelligent automated assistant for media exploration
DK179588B1 (en) 2016-06-09 2019-02-22 Apple Inc. INTELLIGENT AUTOMATED ASSISTANT IN A HOME ENVIRONMENT
US10586535B2 (en) 2016-06-10 2020-03-10 Apple Inc. Intelligent digital assistant in a multi-tasking environment
US10067938B2 (en) 2016-06-10 2018-09-04 Apple Inc. Multilingual word prediction
US10509862B2 (en) 2016-06-10 2019-12-17 Apple Inc. Dynamic phrase expansion of language input
US10192552B2 (en) 2016-06-10 2019-01-29 Apple Inc. Digital assistant providing whispered speech
US10490187B2 (en) 2016-06-10 2019-11-26 Apple Inc. Digital assistant providing automated status report
DK201670540A1 (en) 2016-06-11 2018-01-08 Apple Inc Application integration with a digital assistant
DK179343B1 (en) 2016-06-11 2018-05-14 Apple Inc Intelligent task discovery
DK179049B1 (en) 2016-06-11 2017-09-18 Apple Inc Data driven natural language event detection and classification
DK179415B1 (en) 2016-06-11 2018-06-14 Apple Inc Intelligent device arbitration and control
DK201670737A1 (en) 2016-06-12 2018-01-22 Apple Inc Devices, Methods, and Graphical User Interfaces for Providing Haptic Feedback
DK179823B1 (en) 2016-06-12 2019-07-12 Apple Inc. DEVICES, METHODS, AND GRAPHICAL USER INTERFACES FOR PROVIDING HAPTIC FEEDBACK
JP7351744B2 (ja) 2016-08-10 2023-09-27 シーメンス アクチエンゲゼルシヤフト 産業用途のためのスキルインタフェース
US10261838B2 (en) 2016-08-11 2019-04-16 General Electric Company Method and device for allocating resources in a system
DK179278B1 (en) 2016-09-06 2018-03-26 Apple Inc Devices, methods and graphical user interfaces for haptic mixing
DK201670720A1 (en) 2016-09-06 2018-03-26 Apple Inc Devices, Methods, and Graphical User Interfaces for Generating Tactile Outputs
US10474753B2 (en) 2016-09-07 2019-11-12 Apple Inc. Language identification using recurrent neural networks
US10552544B2 (en) * 2016-09-12 2020-02-04 Sriram Chakravarthy Methods and systems of automated assistant implementation and management
US10043516B2 (en) 2016-09-23 2018-08-07 Apple Inc. Intelligent automated assistant
US10649752B2 (en) * 2016-09-28 2020-05-12 International Business Machines Corporation Sharing data and applications across computing systems
US11281993B2 (en) 2016-12-05 2022-03-22 Apple Inc. Model and ensemble compression for metric learning
US10593346B2 (en) 2016-12-22 2020-03-17 Apple Inc. Rank-reduced token representation for automatic speech recognition
US11204787B2 (en) 2017-01-09 2021-12-21 Apple Inc. Application integration with a digital assistant
US10762040B2 (en) * 2017-01-24 2020-09-01 Microsoft Technology Licensing, Llc Schematized data roaming
GB2559123A (en) * 2017-01-24 2018-08-01 Sony Interactive Entertainment Inc Interaction apparatus and method
EP3602369B1 (en) 2017-03-30 2022-03-30 British Telecommunications public limited company Anomaly detection for computer systems
EP3382591B1 (en) 2017-03-30 2020-03-25 British Telecommunications public limited company Hierarchical temporal memory for expendable access control
EP3602380B1 (en) 2017-03-30 2022-02-23 British Telecommunications public limited company Hierarchical temporal memory for access control
WO2018206374A1 (en) 2017-05-08 2018-11-15 British Telecommunications Public Limited Company Load balancing of machine learning algorithms
EP3622450A1 (en) 2017-05-08 2020-03-18 British Telecommunications Public Limited Company Management of interoperating machine leaning algorithms
WO2018206406A1 (en) 2017-05-08 2018-11-15 British Telecommunications Public Limited Company Adaptation of machine learning algorithms
US11823017B2 (en) * 2017-05-08 2023-11-21 British Telecommunications Public Limited Company Interoperation of machine learning algorithms
US10417266B2 (en) 2017-05-09 2019-09-17 Apple Inc. Context-aware ranking of intelligent response suggestions
DK201770383A1 (en) 2017-05-09 2018-12-14 Apple Inc. USER INTERFACE FOR CORRECTING RECOGNITION ERRORS
DK201770439A1 (en) 2017-05-11 2018-12-13 Apple Inc. Offline personal assistant
US10726832B2 (en) 2017-05-11 2020-07-28 Apple Inc. Maintaining privacy of personal information
US10395654B2 (en) 2017-05-11 2019-08-27 Apple Inc. Text normalization based on a data-driven learning network
DK201770428A1 (en) 2017-05-12 2019-02-18 Apple Inc. LOW-LATENCY INTELLIGENT AUTOMATED ASSISTANT
DK179745B1 (en) 2017-05-12 2019-05-01 Apple Inc. SYNCHRONIZATION AND TASK DELEGATION OF A DIGITAL ASSISTANT
DK179496B1 (en) 2017-05-12 2019-01-15 Apple Inc. USER-SPECIFIC Acoustic Models
US11301477B2 (en) 2017-05-12 2022-04-12 Apple Inc. Feedback analysis of a digital assistant
DK201770431A1 (en) 2017-05-15 2018-12-20 Apple Inc. Optimizing dialogue policy decisions for digital assistants using implicit feedback
DK201770432A1 (en) 2017-05-15 2018-12-21 Apple Inc. Hierarchical belief states for digital assistants
US20180336275A1 (en) 2017-05-16 2018-11-22 Apple Inc. Intelligent automated assistant for media exploration
DK201770372A1 (en) 2017-05-16 2019-01-08 Apple Inc. TACTILE FEEDBACK FOR LOCKED DEVICE USER INTERFACES
US10403278B2 (en) 2017-05-16 2019-09-03 Apple Inc. Methods and systems for phonetic matching in digital assistant services
US10311144B2 (en) 2017-05-16 2019-06-04 Apple Inc. Emoji word sense disambiguation
DK179560B1 (en) 2017-05-16 2019-02-18 Apple Inc. FAR-FIELD EXTENSION FOR DIGITAL ASSISTANT SERVICES
US10657328B2 (en) 2017-06-02 2020-05-19 Apple Inc. Multi-task recurrent neural network architecture for efficient morphology handling in neural language modeling
CN109039670A (zh) 2017-06-09 2018-12-18 钉钉控股(开曼)有限公司 团队配置方法、团队配置方案的分享方法及装置
US10445429B2 (en) 2017-09-21 2019-10-15 Apple Inc. Natural language understanding using vocabularies with compressed serialized tries
CN107911227B (zh) * 2017-09-28 2020-04-28 平安科技(深圳)有限公司 一种断点数据跟进方法、电子装置及计算机可读存储介质
US10755051B2 (en) 2017-09-29 2020-08-25 Apple Inc. Rule-based natural language processing
US10636424B2 (en) 2017-11-30 2020-04-28 Apple Inc. Multi-turn canned dialog
US10733982B2 (en) 2018-01-08 2020-08-04 Apple Inc. Multi-directional dialog
US10733375B2 (en) 2018-01-31 2020-08-04 Apple Inc. Knowledge-based framework for improving natural language understanding
US10789959B2 (en) 2018-03-02 2020-09-29 Apple Inc. Training speaker recognition models for digital assistants
US10592604B2 (en) 2018-03-12 2020-03-17 Apple Inc. Inverse text normalization for automatic speech recognition
US10818288B2 (en) 2018-03-26 2020-10-27 Apple Inc. Natural assistant interaction
US10909331B2 (en) 2018-03-30 2021-02-02 Apple Inc. Implicit identification of translation payload with neural machine translation
US11145294B2 (en) 2018-05-07 2021-10-12 Apple Inc. Intelligent automated assistant for delivering content from user experiences
US10928918B2 (en) 2018-05-07 2021-02-23 Apple Inc. Raise to speak
US10984780B2 (en) 2018-05-21 2021-04-20 Apple Inc. Global semantic word embeddings using bi-directional recurrent neural networks
TWI685803B (zh) * 2018-05-25 2020-02-21 凱威科技股份有限公司 行為回饋方法、伺服器以及計算機裝置
DK180639B1 (en) 2018-06-01 2021-11-04 Apple Inc DISABILITY OF ATTENTION-ATTENTIVE VIRTUAL ASSISTANT
DK179822B1 (da) 2018-06-01 2019-07-12 Apple Inc. Voice interaction at a primary device to access call functionality of a companion device
US11386266B2 (en) 2018-06-01 2022-07-12 Apple Inc. Text correction
US10892996B2 (en) 2018-06-01 2021-01-12 Apple Inc. Variable latency device coordination
DK201870355A1 (en) 2018-06-01 2019-12-16 Apple Inc. VIRTUAL ASSISTANT OPERATION IN MULTI-DEVICE ENVIRONMENTS
US11076039B2 (en) 2018-06-03 2021-07-27 Apple Inc. Accelerated task performance
US10796019B2 (en) * 2018-07-17 2020-10-06 Dell Products L.P. Detecting personally identifiable information (PII) in telemetry data
CN109241101B (zh) 2018-08-31 2020-06-30 阿里巴巴集团控股有限公司 一种数据库查询优化方法、装置、及计算机设备
US11010561B2 (en) 2018-09-27 2021-05-18 Apple Inc. Sentiment prediction from textual data
US10839159B2 (en) 2018-09-28 2020-11-17 Apple Inc. Named entity normalization in a spoken dialog system
US11170166B2 (en) 2018-09-28 2021-11-09 Apple Inc. Neural typographical error modeling via generative adversarial networks
US11462215B2 (en) 2018-09-28 2022-10-04 Apple Inc. Multi-modal inputs for voice commands
US11475898B2 (en) 2018-10-26 2022-10-18 Apple Inc. Low-latency multi-speaker speech recognition
US11638059B2 (en) 2019-01-04 2023-04-25 Apple Inc. Content playback on multiple devices
US11348573B2 (en) 2019-03-18 2022-05-31 Apple Inc. Multimodality in digital assistant systems
DK201970509A1 (en) 2019-05-06 2021-01-15 Apple Inc Spoken notifications
US11423908B2 (en) 2019-05-06 2022-08-23 Apple Inc. Interpreting spoken requests
US11307752B2 (en) 2019-05-06 2022-04-19 Apple Inc. User configurable task triggers
US11475884B2 (en) 2019-05-06 2022-10-18 Apple Inc. Reducing digital assistant latency when a language is incorrectly determined
US11140099B2 (en) 2019-05-21 2021-10-05 Apple Inc. Providing message response suggestions
US11496600B2 (en) 2019-05-31 2022-11-08 Apple Inc. Remote execution of machine-learned models
US11289073B2 (en) 2019-05-31 2022-03-29 Apple Inc. Device text to speech
DK180129B1 (en) 2019-05-31 2020-06-02 Apple Inc. USER ACTIVITY SHORTCUT SUGGESTIONS
US11360641B2 (en) 2019-06-01 2022-06-14 Apple Inc. Increasing the relevance of new available information
WO2021026166A1 (en) 2019-08-06 2021-02-11 Urban Airship, Inc. Cross-channel orchestration of messages
US11488406B2 (en) 2019-09-25 2022-11-01 Apple Inc. Text detection using global geometry estimators
US11372872B2 (en) * 2020-03-30 2022-06-28 Thoughtspot, Inc. Dynamic chronometry data orientation
US11550817B2 (en) 2020-03-30 2023-01-10 Thoughtspot, Inc. Dynamic chronometry data orientation
CN112073303B (zh) * 2020-09-03 2022-10-18 中国平安财产保险股份有限公司 邮件任务收敛管理方法、装置、设备及可读存储介质
US20220075836A1 (en) * 2020-09-08 2022-03-10 Google Llc System And Method For Identifying Places Using Contextual Information
US11956199B2 (en) 2021-07-26 2024-04-09 Airship Group, Inc. Software development kit enabled cross-channel two-way software application messaging
AU2021240195A1 (en) * 2021-08-27 2023-03-16 Sensetime International Pte. Ltd. Data processing method, apparatus, system and device and computer-readable storage medium
WO2023026084A1 (en) * 2021-08-27 2023-03-02 Sensetime International Pte. Ltd. Data processing method, apparatus, system and device and computer-readable storage medium
CN114070809B (zh) * 2021-11-19 2023-03-21 广东美的制冷设备有限公司 一种数据迁移方法、设备及存储介质
US11709660B1 (en) 2022-10-12 2023-07-25 Stodge Inc. Integrated third-party application builder trigger for message flow
US11943188B1 (en) 2023-01-06 2024-03-26 Microsoft Technology Licensing, Llc Restricting message notifications and conversations based on device type, message category, and time period
US20240311375A1 (en) * 2023-03-16 2024-09-19 International Business Machines Corporation Contextual searches in software development environments

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05216641A (ja) * 1992-02-06 1993-08-27 Toshiba Corp グラフィカル・ユーザ・インタフェース制御プログラム生成装置
JPH11327889A (ja) * 1998-05-18 1999-11-30 Toshiba Corp プログラム開発支援装置及び方法並びにプログラム開発支援用ソフトウェアを記録した記録媒体

Family Cites Families (134)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4774658A (en) 1987-02-12 1988-09-27 Thomas Lewin Standardized alarm notification transmission alternative system
US6044205A (en) * 1996-02-29 2000-03-28 Intermind Corporation Communications system for transferring information between memories according to processes transferred with the information
US5287514A (en) * 1990-01-08 1994-02-15 Microsoft Corporation Method and system for customizing a user interface in a computer system
AU639802B2 (en) 1990-08-14 1993-08-05 Oracle International Corporation Methods and apparatus for providing dynamic invocation of applications in a distributed heterogeneous environment
US5301326A (en) * 1991-09-24 1994-04-05 Microsoft Corporation Method and system for controlling the execution of an application program
US5481700A (en) * 1991-09-27 1996-01-02 The Mitre Corporation Apparatus for design of a multilevel secure database management system based on a multilevel logic programming system
US5283856A (en) * 1991-10-04 1994-02-01 Beyond, Inc. Event-driven rule-based messaging system
US5555346A (en) 1991-10-04 1996-09-10 Beyond Corporated Event-driven rule-based messaging system
US5315703A (en) 1992-12-23 1994-05-24 Taligent, Inc. Object-oriented notification framework system
US6748318B1 (en) 1993-05-18 2004-06-08 Arrivalstar, Inc. Advanced notification systems and methods utilizing a computer network
US5416725A (en) 1993-08-18 1995-05-16 P.C. Sentry, Inc. Computer-based notification system having redundant sensor alarm determination and associated computer-implemented method for issuing notification of events
CA2145923C (en) * 1995-03-30 2001-05-08 Gary W. Miller Computer operating system providing means for formatting information in accordance with specified cultural preferences
US5852812A (en) 1995-08-23 1998-12-22 Microsoft Corporation Billing system for a network
US5870746A (en) * 1995-10-12 1999-02-09 Ncr Corporation System and method for segmenting a database based upon data attributes
US5721825A (en) 1996-03-15 1998-02-24 Netvision, Inc. System and method for global event notification and delivery in a distributed computing environment
US6490718B1 (en) * 1996-05-08 2002-12-03 Electronic Data Systems Corporation System and method for processing electronic data interchange using a graphical representation
US6151643A (en) 1996-06-07 2000-11-21 Networks Associates, Inc. Automatic updating of diverse software products on multiple client computer systems by downloading scanning application to client computer and generating software list on client computer
US5813007A (en) 1996-06-20 1998-09-22 Sun Microsystems, Inc. Automatic updates of bookmarks in a client computer
US6021403A (en) 1996-07-19 2000-02-01 Microsoft Corporation Intelligent user assistance facility
US5973612A (en) 1996-09-19 1999-10-26 Microsoft Corporation Flexible object notification
US6446092B1 (en) * 1996-11-01 2002-09-03 Peerdirect Company Independent distributed database system
US6126328A (en) 1997-02-28 2000-10-03 Oracle Corporation Controlled execution of partitioned code
US6055570A (en) 1997-04-03 2000-04-25 Sun Microsystems, Inc. Subscribed update monitors
US6260148B1 (en) 1997-04-04 2001-07-10 Microsoft Corporation Methods and systems for message forwarding and property notifications using electronic subscriptions
US5893091A (en) 1997-04-11 1999-04-06 Immediata Corporation Multicasting with key words
US5892941A (en) 1997-04-29 1999-04-06 Microsoft Corporation Multiple user software debugging system
US6209011B1 (en) 1997-05-08 2001-03-27 Microsoft Corporation Handheld computing device with external notification system
US6112192A (en) * 1997-05-09 2000-08-29 International Business Machines Corp. Method for providing individually customized content in a network
US6173284B1 (en) 1997-05-20 2001-01-09 University Of Charlotte City Of Charlotte Systems, methods and computer program products for automatically monitoring police records for a crime profile
US6026235A (en) * 1997-05-20 2000-02-15 Inprise Corporation System and methods for monitoring functions in natively compiled software programs
US6122633A (en) 1997-05-27 2000-09-19 International Business Machines Corporation Subscription within workflow management systems
US6038601A (en) 1997-07-21 2000-03-14 Tibco, Inc. Method and apparatus for storing and delivering documents on the internet
US5974406A (en) 1997-08-18 1999-10-26 International Business Machines Corporation Automated matching, scheduling, and notification system
US6016394A (en) * 1997-09-17 2000-01-18 Tenfold Corporation Method and system for database application software creation requiring minimal programming
US6484149B1 (en) * 1997-10-10 2002-11-19 Microsoft Corporation Systems and methods for viewing product information, and methods for generating web pages
US5999978A (en) 1997-10-31 1999-12-07 Sun Microsystems, Inc. Distributed system and method for controlling access to network resources and event notifications
CA2307635C (en) 1997-11-05 2004-07-06 Microsoft Corporation Notification scheduling system on a mobile device
US6055505A (en) 1997-12-30 2000-04-25 U S West, Inc. Automatic customer notification system and method
US6704803B2 (en) 1998-01-26 2004-03-09 International Business Machines Corporation Method and system for distributing data events over an information bus
US6510429B1 (en) 1998-04-29 2003-01-21 International Business Machines Corporation Message broker apparatus, method and computer program product
US6138158A (en) 1998-04-30 2000-10-24 Phone.Com, Inc. Method and system for pushing and pulling data using wideband and narrowband transport systems
US6108712A (en) * 1998-05-05 2000-08-22 International Business Machines Corp. Client-server system with central application management and providing export agent capability for retrofitting existing hardware and applications into the system
CZ148199A3 (cs) 1998-05-08 1999-11-17 International Business Machines Corporation Použití technologie dotazů v databázích pro přihlašování k účasti na zprávách v systémech pro zpracování zpráv
US6167448A (en) 1998-06-11 2000-12-26 Compaq Computer Corporation Management event notification system using event notification messages written using a markup language
US6330566B1 (en) * 1998-06-22 2001-12-11 Microsoft Corporation Apparatus and method for optimizing client-state data storage
US6424966B1 (en) 1998-06-30 2002-07-23 Microsoft Corporation Synchronizing crawler with notification source
US6353926B1 (en) 1998-07-15 2002-03-05 Microsoft Corporation Software update notification
US20030025599A1 (en) 2001-05-11 2003-02-06 Monroe David A. Method and apparatus for collecting, sending, archiving and retrieving motion video and still images and notification of detected events
US6256664B1 (en) 1998-09-01 2001-07-03 Bigfix, Inc. Method and apparatus for computed relevance messaging
WO2000016209A1 (en) 1998-09-15 2000-03-23 Local2Me.Com, Inc. Dynamic matchingtm of users for group communication
US6804663B1 (en) * 1998-09-21 2004-10-12 Microsoft Corporation Methods for optimizing the installation of a software product onto a target computer system
US6314533B1 (en) 1998-09-21 2001-11-06 Microsoft Corporation System and method for forward custom marshaling event filters
US6275957B1 (en) 1998-09-21 2001-08-14 Microsoft Corporation Using query language for provider and subscriber registrations
US6327705B1 (en) * 1998-10-08 2001-12-04 Microsoft Corporation Method for creating and maintaining user data
US6343376B1 (en) * 1998-10-22 2002-01-29 Computer Computer Corporation System and method for program verification and optimization
US6292825B1 (en) 1998-11-12 2001-09-18 International Business Machines Corporation Service application with pull notification
US6466949B2 (en) 1998-11-23 2002-10-15 Myway.Com Corporation Performing event notification in a database having a distributed web cluster
US6564251B2 (en) * 1998-12-03 2003-05-13 Microsoft Corporation Scalable computing system for presenting customized aggregation of information
US6438618B1 (en) 1998-12-16 2002-08-20 Intel Corporation Method and device for filtering events in an event notification service
US6920616B1 (en) * 1998-12-18 2005-07-19 Tangis Corporation Interface for exchanging context data
US6829770B1 (en) 1999-02-23 2004-12-07 Microsoft Corporation Object connectivity through loosely coupled publish and subscribe events
DE10031716B4 (de) 1999-07-06 2006-10-26 International Business Machines Corp. Abonnement und Benachrichtigung bei Datenbanktechnik
US6400810B1 (en) 1999-07-20 2002-06-04 Ameritech Corporation Method and system for selective notification of E-mail messages
US6405191B1 (en) 1999-07-21 2002-06-11 Oracle Corporation Content based publish-and-subscribe system integrated in a relational database system
GB2354847A (en) 1999-09-28 2001-04-04 Ibm Publish/subscribe data processing with subscription points for customised message processing
US6829639B1 (en) 1999-11-15 2004-12-07 Netvision, Inc. Method and system for intelligent global event notification and control within a distributed computing environment
US6829478B1 (en) 1999-11-19 2004-12-07 Pamela G. Layton Information management network for automated delivery of alarm notifications and other information
US20020069244A1 (en) 1999-11-24 2002-06-06 John Blair Message delivery system billing method and apparatus
US6751657B1 (en) 1999-12-21 2004-06-15 Worldcom, Inc. System and method for notification subscription filtering based on user role
AU2001227857A1 (en) * 2000-01-14 2001-07-24 Saba Software, Inc. Method and apparatus for a business applications management system platform
EP1117050A1 (en) 2000-01-14 2001-07-18 Sun Microsystems, Inc. Individual data representation
US6662195B1 (en) 2000-01-21 2003-12-09 Microstrategy, Inc. System and method for information warehousing supporting the automatic, real-time delivery of personalized informational and transactional data to users via content delivery device
US6910070B1 (en) 2000-01-24 2005-06-21 Oracle International Corporation Methods and systems for asynchronous notification of database events
WO2001055892A1 (en) 2000-01-28 2001-08-02 Global Technology Marketing International Recipient selection and message delivery system and method
US6766329B1 (en) * 2000-01-31 2004-07-20 Microsoft Corporation Dynamic personalized information organizer
US6462748B1 (en) 2000-02-25 2002-10-08 Microsoft Corporation System and method for processing color objects in integrated dual color spaces
US6513026B1 (en) 2000-06-17 2003-01-28 Microsoft Corporation Decision theoretic principles and policies for notification
US6601012B1 (en) 2000-03-16 2003-07-29 Microsoft Corporation Contextual models and methods for inferring attention and location
US7243130B2 (en) 2000-03-16 2007-07-10 Microsoft Corporation Notification platform architecture
US20020032597A1 (en) 2000-04-04 2002-03-14 Chanos George J. System and method for providing request based consumer information
JP2001306308A (ja) 2000-04-11 2001-11-02 Sap Ag データ中心アプリケーションのクラス定義方法
US20020082919A1 (en) 2000-05-01 2002-06-27 Michael Landau System method and article of manufacture for affiliate tracking for the dissemination of promotional and marketing material via e-mail
US7266595B1 (en) * 2000-05-20 2007-09-04 Ciena Corporation Accessing network device data through user profiles
WO2001091438A1 (en) 2000-05-19 2001-11-29 Synapse Wireless, Inc. Method and apparatus for generating dynamic graphical representations and real-time notification of the status of a remotely monitored system
US7174557B2 (en) 2000-06-07 2007-02-06 Microsoft Corporation Method and apparatus for event distribution and event handling in an enterprise
US20030023435A1 (en) * 2000-07-13 2003-01-30 Josephson Daryl Craig Interfacing apparatus and methods
US6839730B1 (en) 2000-07-14 2005-01-04 Novell, Inc. Method and system for efficiently matching events with subscribers in a content-based publish-subscribe system
US7302280B2 (en) 2000-07-17 2007-11-27 Microsoft Corporation Mobile phone operation based upon context sensing
US20020032771A1 (en) 2000-07-20 2002-03-14 Trond Gledje Event-based advertisements
US20020165894A1 (en) 2000-07-28 2002-11-07 Mehdi Kashani Information processing apparatus and method
US6944662B2 (en) 2000-08-04 2005-09-13 Vinestone Corporation System and methods providing automatic distributed data retrieval, analysis and reporting services
KR100353649B1 (ko) 2000-08-18 2002-09-28 삼성전자 주식회사 무선망을 이용한 네비게이션 시스템 및 그에 의한 경로안내 방법
US20020035482A1 (en) 2000-08-28 2002-03-21 Coble Keith A. Business to business information environment with subscriber-publisher model
AU2001292567A1 (en) 2000-09-01 2002-03-13 Togethersoft Corporation Methods and systems for improving a workflow based on data mined from plans created from the workflow
JP2002090163A (ja) 2000-09-20 2002-03-27 Pioneer Electronic Corp ナビゲーション装置及びナビゲーション制御用プログラムがコンピュータで読取可能に記録された情報記録媒体
US7647231B2 (en) 2000-10-13 2010-01-12 United States Postal Service Flexible mail delivery system and method
JP3827936B2 (ja) * 2000-10-18 2006-09-27 シャープ株式会社 情報提供制御装置、情報提供方法、情報提供プログラムを記録した記録媒体および情報提供システム
US6826541B1 (en) * 2000-11-01 2004-11-30 Decision Innovations, Inc. Methods, systems, and computer program products for facilitating user choices among complex alternatives using conjoint analysis
US20020087740A1 (en) 2000-11-06 2002-07-04 Rick Castanho System and method for service specific notification
US20030105732A1 (en) * 2000-11-17 2003-06-05 Kagalwala Raxit A. Database schema for structure query language (SQL) server
US6532471B1 (en) * 2000-12-11 2003-03-11 International Business Machines Corporation Interface repository browser and editor
EP1215608A1 (en) 2000-12-15 2002-06-19 Pioneer Corporation Advertisement information providing system
US7698161B2 (en) * 2001-01-04 2010-04-13 True Choice Solutions, Inc. System to quantify consumer preferences
US6745193B1 (en) * 2001-01-25 2004-06-01 Microsoft Corporation System and method for defining, refining, and personalizing communications policies in a notification platform
EP1233387A2 (en) 2001-02-19 2002-08-21 Hitachi Kokusai Electric Inc. Vehicle emergency reporting system and method
US20020120711A1 (en) 2001-02-23 2002-08-29 International Business Machines Corporation Method and system for intelligent routing of business events on a subscription-based service provider network
US6986145B2 (en) 2001-03-13 2006-01-10 Dipayan Gangopadhyay In-context access to relevant services from multiple applications and information systems by object schema traversal
US6987755B2 (en) 2001-03-22 2006-01-17 Siemens Communications, Inc. System and method for user notification in a communication system
US20020135614A1 (en) * 2001-03-22 2002-09-26 Intel Corporation Updating user interfaces based upon user inputs
US6617969B2 (en) 2001-04-19 2003-09-09 Vigilance, Inc. Event notification system
US6976086B2 (en) 2001-06-18 2005-12-13 Siemens Business Services, Llc Systems and methods to facilitate a distribution of information via a dynamically loadable component
CN1647070A (zh) * 2001-06-22 2005-07-27 诺萨·欧莫贵 用于知识检索、管理、交付和表示的系统和方法
US6981250B1 (en) 2001-07-05 2005-12-27 Microsoft Corporation System and methods for providing versioning of software components in a computer programming language
US7668535B2 (en) 2001-07-09 2010-02-23 Palm, Inc. Notification infrastructure for sending device-specific wireless notifications
US6910033B2 (en) 2001-08-15 2005-06-21 Precache Inc. Method for storing Boolean functions to enable evaluation, modification, reuse, and delivery over a network
JP2003069547A (ja) 2001-08-29 2003-03-07 Fujitsu Ltd マルチキャスト通信システム
US7275235B2 (en) 2001-08-29 2007-09-25 Molinari Alfred A Graphical application development system for test, measurement and process control applications
US7233781B2 (en) 2001-10-10 2007-06-19 Ochoa Optics Llc System and method for emergency notification content delivery
US7272832B2 (en) 2001-10-25 2007-09-18 Hewlett-Packard Development Company, L.P. Method of protecting user process data in a secure platform inaccessible to the operating system and other tasks on top of the secure platform
US20030083952A1 (en) 2001-10-29 2003-05-01 Simpson Shell S. Web-based imaging service providing the ability to specify a charge-back account
US20030172368A1 (en) * 2001-12-26 2003-09-11 Elizabeth Alumbaugh System and method for autonomously generating heterogeneous data source interoperability bridges based on semantic modeling derived from self adapting ontology
US7143417B2 (en) 2002-01-10 2006-11-28 International Business Machines Corporation Notification services within a unified communications service
JP2003240574A (ja) 2002-02-14 2003-08-27 Mitsubishi Electric Corp ナビゲーション装置及びナビゲーション方法
US7010710B2 (en) 2002-03-12 2006-03-07 International Business Machines Corporation Proximity sensor enhanced power management
JP4295953B2 (ja) 2002-04-26 2009-07-15 パイオニア株式会社 距離係数学習装置、この方法、このプログラム、このプログラムを記録する記録媒体、移動状況算出装置、および、現在位置算出装置
US7987491B2 (en) * 2002-05-10 2011-07-26 Richard Reisman Method and apparatus for browsing using alternative linkbases
US7698276B2 (en) 2002-06-26 2010-04-13 Microsoft Corporation Framework for providing a subscription based notification system
US20040002958A1 (en) * 2002-06-26 2004-01-01 Praveen Seshadri System and method for providing notification(s)
US20040002988A1 (en) 2002-06-26 2004-01-01 Praveen Seshadri System and method for modeling subscriptions and subscribers as data
US7177859B2 (en) 2002-06-26 2007-02-13 Microsoft Corporation Programming model for subscription services
US7788588B2 (en) * 2003-02-07 2010-08-31 Microsoft Corporation Realizing users' preferences
US20050084082A1 (en) * 2003-10-15 2005-04-21 Microsoft Corporation Designs, interfaces, and policies for systems that enhance communication and minimize disruption by encoding preferences and situations
US20050091184A1 (en) * 2003-10-24 2005-04-28 Praveen Seshadri Personalized folders
US7137099B2 (en) * 2003-10-24 2006-11-14 Microsoft Corporation System and method for extending application preferences classes

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05216641A (ja) * 1992-02-06 1993-08-27 Toshiba Corp グラフィカル・ユーザ・インタフェース制御プログラム生成装置
JPH11327889A (ja) * 1998-05-18 1999-11-30 Toshiba Corp プログラム開発支援装置及び方法並びにプログラム開発支援用ソフトウェアを記録した記録媒体

Also Published As

Publication number Publication date
RU2364917C2 (ru) 2009-08-20
TW200515189A (en) 2005-05-01
NO20052547L (no) 2005-07-15
AU2004279183A8 (en) 2008-10-02
CA2507255C (en) 2013-05-21
TWI388995B (zh) 2013-03-11
AU2004279183B2 (en) 2010-03-11
EP1646961A4 (en) 2010-02-03
KR20060114624A (ko) 2006-11-07
KR101103949B1 (ko) 2012-01-12
NZ540876A (en) 2009-04-30
JP2007518151A (ja) 2007-07-05
RU2005120689A (ru) 2006-01-20
CA2507255A1 (en) 2005-05-19
BRPI0406520A (pt) 2005-12-13
EP1646961A2 (en) 2006-04-19
WO2005045740A3 (en) 2007-08-30
WO2005045740A2 (en) 2005-05-19
AU2004279183A1 (en) 2005-06-23
IL169411A (en) 2012-02-29
US20050091269A1 (en) 2005-04-28
MXPA05006966A (es) 2005-08-16
NO20052547D0 (no) 2005-05-26
ZA200505253B (en) 2008-12-31
CN101142549A (zh) 2008-03-12
US7669177B2 (en) 2010-02-23

Similar Documents

Publication Publication Date Title
JP4896726B2 (ja) プリファレンスの条件の評価に基づいてアクションを実行するためのシステム、方法および記憶装置
JP5189768B2 (ja) アプリケーションプレファレンスクラスを拡張するシステムおよび方法
US20050091184A1 (en) Personalized folders
US7177859B2 (en) Programming model for subscription services
US20040002988A1 (en) System and method for modeling subscriptions and subscribers as data
US7209916B1 (en) Expression and flexibility framework for providing notification(s)
US7243130B2 (en) Notification platform architecture
US7457879B2 (en) Notification platform architecture
JP2004506961A (ja) 優先順位の生成および管理
US11341337B1 (en) Semantic messaging collaboration system
AU2022288543A1 (en) Messaging system and method for providing management views
EP1852789A1 (en) Priorities generation and management

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070727

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101012

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110112

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110204

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110506

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110513

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110701

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110726

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111031

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20111101

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20111101

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20111122

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20111213

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111221

R150 Certificate of patent or registration of utility model

Ref document number: 4896726

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150106

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees