<実施の形態の概要>
開示される実施形態は、画像データ及びシンボリックデータの双方を含むフォームの集まりに関する表示を作成するシステム等により従来の問題を少なくとも軽減する。一実施形態において、画像ベースの文書管理(Image Based Document Management:IBDM)サーバは、ステート記録部と、問い合わせエンジンと、表示作成モジュールと、ユーザインタフェースエンジンとを有する表示アプリケーションを含む。表示作成モジュールは第1のユーザによる少なくとも1つの操作に基づいて第1のコレクション表示を作成する。ステート記録部又はステートレコーダは、第1のコレクション表示にアクセスした第2のユーザから、第1のコレクション表示の選択を受け付ける。問い合わせエンジンは、第1のコレクション表示に関連する問い合わせを実行する。ユーザインタフェースエンジンは、第1のコレクション表示を含むコレクション表示のリストを第2のユーザに提示するため及び第1のコレクション表示を第2のユーザに表示するための図形データを生成する。
他の実施形態は、対応する方法、システム、装置、コンピュータプログラムプロダクト、コンピュータプログラムを含み、これらは上記及びその他の開示内容に関連している。
本システムは、画像データを伴う全てのセルをシンボリック表現に書き換える複雑な処理を必要とすることなく、1人以上のユーザからのデータを迅速に組織することが可能である。本システムは、有利なことに、画像データ及びシンボリックデータの双方を含む表示同士の間で作成及び切り替えを行う。本願により説明される特徴及び効果は全てを網羅するものではなく、明細書及び図面により多くの更なる特徴及び効果が明らかになるであろう。更に、明細書で使用されている言葉は原則として読みやすさや説明の便宜等の観点から選択されており、本願により開示される内容を限定するようには意図されていない点に留意すべきである。
<実施の形態の詳細な説明>
以下、単なる具体例にすぎない非限定的な添付図面と共に、本発明を説明する。図中、同様な番号は同様な要素を指す。
以下、画像データ及びシンボリックデータの双方を含むフォームのコレクションの表示(コレクション表示)(view of collection)を作成するシステム及び方法を説明する。説明の便宜上、多くの具体的な詳細が本発明の十分な理解を促すために記述されている。しかしながら、実施の形態はそのような具体的な詳細によらずに実行されてもよいことは、当業者にとって明らかであろう。また、構造及び装置は本発明を曖昧にしないようにブロック図で示されている。例えば、本発明はスマートフォン等のようなユーザ装置及び具体的なソフトウェアやハードウェアを参照しながら説明されている。しかしながら本説明はデータ及びコマンドを受信することが可能な任意のタイプのコンピュータ装置、及びサービスを提供する任意のペリフェラル装置にも適用できる。
「一実施形態」又は「実施の形態」という明細書中の用語は、その形態に関連して具体的に説明される特徴、構造又は特性等が少なくとも1つの形態に含まれていることを意味する。本明細書中で多数登場する「一実施形態」又は「実施の形態」という語句は必ずしも全てが同じ形態を指すとは限らない。
後述の詳細な説明の一部は、コンピュータメモリ内のデータビットに関する動作の象徴的表現及びアルゴリズムの観点からなされている。これらのアルゴリズム的な説明及び表現は、当業者が他の当業者に各自の意図を非常に効果的に伝えるためにデータ処理の技術分野で彼らによって使用されている。本願におけるアルゴリズムは、一般に、所望の結果を得るための一貫した一連のステップであると考えられる。これらのステップは物理量の物理的な処理を必要とする。必須ではないが、通常、これらの量は、保存、転送、結合、比較及びその他の処理を行うことが可能な電気的又は磁気的な信号の形式をとる。一般的な理由から、これらの信号を、ビット、値、要素、シンボル、キャラクタ、期間、数等として言及することがしばしば便利であることが分かる。
しかしながら、これら及び類似する用語の全ては、適切な物理量に関連付けられるが、これらの物理量に適用される便宜的なラベルにすぎないことに留意を要する。明示的に言及しない限り、以下の説明から明らかであるように、本説明を通じて、「処理」又は「演算」又は「計算」又は「決定」又は「表示」等のような用語を用いた説明は、コンピュータシステム又は類似する電子コンピュータ装置による処理及びプロセスに関連することが理解され、そのコンピュータシステム等は、コンピュータシステムのレジスタ及びメモリ内で物理量として表現されているデータを、コンピュータシステムメモリ又は他のそのような情報を保存、通信又は表示する装置の中で物理量として表現される同様な他のデータに、処理及び変換する。
本発明は本願による処理を実行する装置にも関連している。本装置は、必要とされる目的に特化して構築されてもよいし、或いはコンピュータに保存されたコンピュータプログラムにより選択的にアクティブに又は再構築される汎用コンピュータを備えていてもよい。そのようなコンピュータプログラムはコンピュータで読み取ることが可能な記憶媒体(コンピュータ読み取り可能記憶媒体)に保存されていてもよく、その記憶媒体は、限定ではないが、例えば、フロッピディスク、光ディスク、CD-ROM及び磁気ディスク等を含む任意のディスク、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気カード、光カード、不揮発性メモリを備えたUSBキーを含むフラッシュメモリ、又は電子命令を保存するのに適した任意のタイプのメディア等であり、これらの各々はコンピュータシステムバスにより結合されている。
一実施形態は、完全なハードウェアの形態、完全なソフトウェアの形態、又はハードウェア及びソフトウェア双方を含む形態をとることが可能である。好ましい実施の形態はソフトウェアで実施され、限定ではないが、ファームウェア、常駐ソフトウェア、マイクロコード等を含む。
更に、実施の形態はコンピュータプログラム又はコンピュータプログラムプロダクトの形態をとることが可能であり、コンピュータ又は何らかの命令実行システムにより又はそれらに関連して使用されるプログラムコードを提供するコンピュータにより利用することが可能な又は読み取ることが可能な媒体からアクセスできる。本発明に関し、コンピュータにより利用することが可能な又は読み取ることが可能な媒体は、命令実行システム、装置又はデバイスにより又はそれらに関して使用されるプログラムを包含、保存、格納、通信、伝送又は転送することが可能な任意の装置とすることが可能である。
プログラムコードを保存及び/又は実行するのに適したデータ処理システムは、システムバスを介してメモり要素に直接的又は間接的に結合される少なくとも1つのプロセッサを含む。メモリ要素は、プログラムコードの実際の実行中に使用されるローカルメモリ、大容量ストレージ(バルクストレージ)及びキャッシュメモリを含むことが可能であり、キャッシュメモリは少なくとも幾つかのプログラムコードの一時的な記憶を行い、実行の最中にバルクストレージからコードを取り出さなければならない回数を減らす。入力/出力(I/O)装置(例えば、キーボード、ディスプレイ、ポインティングデバイス等であるが、これらに限定されない)は、直接的に又は介在するI/Oコントローラを介してシステムに結合されてもよい。
ネットワークアダプタがシステムに結合され、データ処理システムが、介在するプライベート又はパブリックネットワークを介して、他のデータ処理システム、リモートプリンタ又はストレージ装置に結合できるようになっていてもよい。モデム、ケーブルモデム及びイーサーネット(登録商標)カードは、現在利用可能なタイプのネットワークアダプタの一例である。
そして、本願で説明されるアルゴリズム及びディスプレイは何らかの特定のコンピュータや他の装置に固有に関連してはいない。本願による教示内容によるプログラムと共に様々な汎用システムが使用されよいし、或いは必要な方法ステップを実行するように具体的に装置を特化させて構築してもよい。これらの様々なシステムに必要な構造は以下の詳細な説明から更に明らかになるであろう。更に、本明細書は何らかの特定のプログラミング言語に関連して説明されてはいない。本願で説明される様々な実施形態の教示内容を実現するために、様々なプログラミング言語が使用されてよいことが、理解されるであろう。
<システム概要>
図1は、画像データ及びシンボリックデータ(又は象徴データ(symbolic data))の双方を含むフォームのコレクション表示を作成し、ユーザの操作に基づいて第2の表示を作成する作成するシステム100の上位概念的なブロック図を示す。図示のシステム100の実施形態は、画像取得装置101と、携帯コンピュータ装置102a-102aと、ユーザ装置103a-103nと、画像ベースの文書管理(IBDM)サーバ106とを有し、これら各々はネットワーク104に通信可能に結合されている。図1及び他の図面において、参照番号の後の文字、例えば「102a」はその特定の参照番号を有する要素を示す。後に続く文字を有しない文字列による参照番号、例えば「102」はその参照番号を担う要素の全て又は任意の何れかを一般的に指している。
ネットワーク104は、従来のタイプ、有線又は無線によるものであり、スター構成、トークンリング構成又は当該技術分野で既知の他の形態等のような様々な任意の形態を有してよい。更に、ネットワークは、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)(例えば、インターネット)、及び/又は複数の装置が通信する相互接続された任意のデータ経路を含んでいてよい。更に別の形態では、ネットワーク104はピアツーピアネットワークであってもよい。ネットワーク104は多種多様な通信プロトコルでデータを送信する通信ネットワークの部分に結合されていてもよいし或いはそのような部分を含んでいてもよい。更に別の形態では、ネットワーク104はブルートゥース(登録商標)通信ネットワーク又はセルラ通信ネットワークを含み、ショートメッセージングサービス(SMS)、マルチメディアメッセージングサービス(MMS)、ハイパーテキストトランスファプロトコル(HTTP)、直接的なデータ接続、無線アプリケーションプロトコル(WAP)、電子メール等によるデータを送受信する。複数のユーザ装置103a-103n、複数の携帯コンピュータ装置102a-102a及びIBDMサーバ106にただ1つのネットワーク104しか結合されていないが、実際には任意の数のネットワーク104が個々の装置又はエンティティに接続されていてよい。
携帯コンピュータ装置102a-102aの各々は信号線112a-112nによりネットワーク104に無線でそれぞれ接続される。携帯コンピュータ装置102は、メモリ、プロセッサ及び無線通信機能を有する任意のコンピュータ装置である。例えば、携帯コンピュータ装置102は、タブレットコンピュータ、パーソナルディジタルアシスタント、スマートフォン等とすることが可能である。携帯コンピュータ装置102は、フォーム画像を受信し、そのフォーム画像にストローク注釈を付加し、注釈の付いたフォーム画像をIBDMサーバ106に送信する。フォームは、必要な情報を入力するためのフィールド(すなわち、空白領域)を含む任意の文書である。記入された場合に、必要な情報を伴うフォームは、取引文書、注文書、要求書等をなしてもよい。例えば、フォームは、納税様式、保険記入用紙、医療問診票、電子小切手、就職申込書、調査様式、受領書等であってもよい。
一実施形態において、携帯コンピュータ装置102は、コンピュータのパッド及びスタイラスを含むタブレットコンピュータである。コンピュータパッドは、フォーム画像を表示し、かつスタイラスやユーザの指先を用いてフォーム画像に記入される任意のストローク(筆跡、1画1画、線等)(stroke)を取得するように適合している。ストロークは、典型的には、あたかも紙にペンで記入するかのように画像の表面に表示される。コンピュータパッドは、通常、ストロークを、一連の複数の点又は一連の複数のセグメントとして、場所、タイミング及び圧力(応力)情報と共に取得する。コンピュータパッドは、取得したストロークを含むフォーム画像を、当該技術分野で既知の何らかの画像フォーマットで、例えばスケーラブルベクトルグラフィックスファイルフォーマット(SVG)(これは、ストローク及び画像の双方を包含することが可能である)で送信する。一実施形態において、コンピュータパッドは、ストロークに関連する情報(例えば、場所及びタイミング情報)をメタデータとしてフォーム画像に付随させる。携帯コンピュータ装置102は、グローバルポジショニングシステム(GPS)回路を利用することで、又は媒体アクセス制御(MAC)アドレスを含むデータベースにアクセスすることで、位置情報を確認する。一実施形態において、取得したストロークは、SVG又はインクマークアップ言語(InkML)等を含む当該技術分野で知られているストロークフォーマットで保存される。
画像取得装置101は信号線111を介してネットワーク104に結合されている。ただ1つの画像取得装置101しか図示されていないが、当業者は任意の数の画像取得装置101がネットワーク104に結合可能であることを認めるであろう。画像取得装置101は、例えばペン、鉛筆等を用いて記入されたストローク(又は線)を含む印刷された形式の画像(印刷フォーム画像)を取得し、その印刷フォーム画像をIBDMサーバ106に送信するのに適合している。一実施形態において、画像取得装置101は、マークされていない印刷フォーム画像(すなわち、如何なるストロークも記入されていない印刷フォーム画像)を、メタデータとして、取得した画像と共にIBDMサーバ106に送信する。画像取得装置101は、例えば、スキャナ、ディジタルカメラ、標準的なセルラ電話機、ウェブカム、ビデオレコーダ等である。
ユーザ装置103a-103nの各々は信号線113a-113nを介してネットワーク104に結合されている。ユーザ装置103はメモリ及びプロセッサを含む任意のコンピュータ装置であり、例えばデスクトップコンピュータ、ラップトップコンピュータ等である。ユーザ装置103はIBDMサーバ106へのデータを送信する及びIBDMサーバ106からのデータを受信するように適合している。例えば、ユーザ装置103は、テーブルを見るために及び/又はテーブルを修正するためにIBDMサーバ106にリクエストを送信する。ユーザ装置103は、IBDMサーバ106の情報にアクセスすることが許可されているユーザによりアクセスされ、そのようなユーザは、例えば携帯コンピュータ装置102に送信したフォームの作成者や、IBDMサーバ106の管理者である。
IBDMサーバ106は、メモリ及びプロセッサを含むコンピュータ装置であり、かつ信号線116を介してネットワーク104に結合されている。IBDMサーバ106は表示アプリケーション105を含んでいる。表示アプリケーション105は、携帯コンピュータ装置102a-102a及び画像取得部101から受信したフォーム画像からコレクションを作成し、第1のユーザからの少なくとも1つの操作に基づいて第1のコレクション表示を作成する。一実施形態において、表示アプリケーション105は、コレクションにアクセスした第1のユーザから第1のコレクション表示の選択を受信し、第1のコレクション表示に関連する問い合わせ(query)を行わせ、第1のコレクション表示を第1のユーザに表示する。別の実施形態において、表示アプリケーション105は、コレクションにアクセスした第2のユーザから第1のコレクション表示の選択を受信し、第1のコレクション表示に関する問い合わせを行い、第1のコレクション表示を第2のユーザに表示する。ただ1つのIBDMサーバ106しか示されていないが、任意の数のIBDMサーバ106がネットワーク104に結合されてよいことを、当業者は認めるであろう。IBDMサーバ106については図2を参照しながら更に詳細に説明する。
<画像ベースの文書管理(IBDM)サーバ106>
図2を参照すると、画像アプリケーション105が詳細に示されている。図2はIBDMサーバ106のブロック図であり、IBDMサーバ106は、プロセッサ240と、メモリ245と、通信ユニット255と、データストレージ250と、表示アプリケーション105とを含む。
プロセッサ240と、メモリ245と、通信ユニット255と、データストレージ250とはバス230に通信可能に結合されている。バス230は、業界標準アーキテクチャ(ISA)バス、ペリフェラルコンポーネント相互接続(PCI)バス、ユニバーサルシリアルバス(USB)、又はその他の何らかの類似する機能を発揮する既存のバス等を含む1つ以上のバスを表現してもよい。
プロセッサ240は、算術演算論理ユニット、マイクロプロセッサ、汎用コントローラ又は演算を実行するその他の何らかのプロセッサアレイを有し、電子表示信号を表示装置に与える。プロセッサ240は、信号線272を介してIBDMサーバ106の他の要素と通信するためにバス230に結合されている。プロセッサ240は、データ信号を処理し、様々な演算アーキテクチャを有し、例えば、複合命令セットコンピュータ(CSIC)アーキテクチャ、縮小命令セットコンピュータ(RISC)、又は組み合わせによる命令セットを実行するアーキテクチャを含む。図2にはただ1つのプロセッサしか示されていないが、複数のプロセッサが含まれていてもよい。処理能力は画像の表示、画像の取得、及び画像の通信に限定されない。処理能力は、様々なタイプの特徴抽出やサンプリング等を含む更なる複合的なタスクを実行できるほど十分であってもよい。他のプロセッサ、オペレーティングシステム、センサ、ディスプレイ及び物理コンフィギュレーションが可能であることは、当業者にとって明らかであろう。
メモリ245は、プロセッサ240により実行されてよい命令及び/又はデータを保存する。メモリ245は、信号線274を介してIBDMサーバ106の他の要素と通信するためにバス230に結合されている。命令及び/又はデータは、本願で説明される技法の全部及び/又は何れかを実行するコードを有してもよい。メモリ245は、ダイナミックランダムアクセスメモリ(DRAM)装置、スタティックランダムアクセスメモリ(SRAM)装置、フラッシュメモリ、又はその他の当該技術分野で知られている何らかの他のメモリ装置であってもよい。一実施形態において、メモリ245は、不揮発性メモリ又は同様な永続的なストレージ装置及び媒体を含んでもよく、例えば、ハードディスクドライブ、フロッピディスクドライブ、CD-ROM装置、DVD-ROM装置、DVD-RAM装置、DVD-RAM装置、DVD-RW装置、フラッシュメモリ装置又はその他の当該技術分野で既知の情報を永続的に保存する何らかの大容量ストレージ装置等である。
通信ユニット255は、プロセッサ240をネットワーク104及びその他の処理システムに接続することで、データを受信及び送信するハードウェアである。通信ユニット255は、ユーザ装置103からのリクエスト(例えば、テーブルを求めるリクエスト)等のようなデータを受信し、そのリクエストをテーブル生成部204に送信する。通信ユニット255は、フォーム画像等のような情報を携帯コンピュータ装置102から受信する。通信ユニット255は、例えば問い合わせに応じて、修正されたテーブル等のようなテーブルをユーザ装置103に送信する。通信ユニット255は信号線278を介してバス230に結合されている。
一実施形態において、通信ユニット255は、ユーザ装置103、携帯コンピュータ装置102又はその他の通信チャネルに対する直接的な物理接続のためのポートを含んでいる。例えば、通信ユニット255は、ユーザ装置103との有線接続のためのRJ45ポート又は同様なポートを含む。別の実施形態では、通信ユニット255は、ユーザ装置103、携帯コンピュータ装置102又は他の任意の通信チャネルとの間で1つ以上の無線通信方式を利用してデータを通信するための無線トランシーバ116を含み、無線通信方式は例えばIEEE802.11、IEEE802.16、ブルートゥース(登録商標)又はその他の適切な無線通信方式である。
更に別の実施形態では、通信ユニット255はセルラ通信ネットワークを介してデータを送受信するセルラ通信トランシーバを含み、例えば、ショートメッセージングサービス(SMS)、マルチメディアメッセージングサービス(MMS)、ハイパーテキストトランスファプロトコル(HTTP)、ダイレクトデータ接続、WAP、電子メール又はその他の適切な何らかのタイプの電子通信を行う。更に別の実施形態では、通信ユニット255は有線ポート及び無線トランシーバを含む。当業者に理解されるように、通信ユニット255は、ネットワーク204との他の従来の接続を行い、標準的なネットワークプロトコル(例えば、TCP/IP、HTTP、HTTPS及びSMTP)を利用してファイル及び/又はメディアオブジェクトを通信する。
データストレージ250は、画像データとシンボリックデータとの双方を含むフォームの
コレクション表示を作成するための情報を保存する一時的でない有形メモリである。例えば、データストレージ250は、フォーム画像、フォーム画像の集まり(コレクション)、コレクションの表示(内容)、表示に関連する問い合わせ、コレクションの表示を求めるリクエスト等を保存する。一実施形態において、データストレージ250はそのようなコレクション、表示及び問い合わせ等のようなデータを保存するデータベースを含む。データストレージ250は、信号線276を介して他のコンポーネントと通信するためにバス230に結合されている。
一実施形態において、表示アプリケーション105は、コントローラ202、テーブル生成部204、ステート記録部208、画像生成部210及びユーザインタフェースエンジン212を有する。
コントローラ202は、通信ユニット255を介してデータを受信し、表示アプリケーション105の適切なコンポーネントにデータをルーティングし、かつコンポーネントからの応答(レスポンス)を通信ユニット255に送信し、ユーザ装置103及びシステム100の他のコンポーネントへ送信を行うソフトウェア及びルーチンである。一実施形態において、コントローラ202はプロセッサ240により実行可能な一群の命令であり、IBDMサーバ106のコンポーネントとシステム100の他のコンポーネントとの間のデータ転送を管理するための後述の機能を発揮する。別の実施形態において、コントローラ202は、メモリ245に保存され、プロセッサ240によりアクセス可能でありかつ実行可能である。何れにせよ、コントローラ202は、プロセッサ240、通信ユニット255及び表示アプリケーション105の他のコンポーネントと共に協働して通信するように適合されている。
本明細書において、ストロークデータは一連の点、ラインセグメント又は曲線としてフォームから取得され、選択的に、ストロークに関連する圧力(応力又は筆圧)、時間及び加速度などの情報を含んでいる。処理の便宜上、ストロークはしばしば画像に変換されるが、画像はストロークに関するメタデータ(例えば、圧力や時間データ)を含むことが可能である。メタデータは画像の中に含まれてもよいし、或いは別の方法で画像に関連付けられていてもよい。ストロークデータ及び画像データは、携帯コンピュータ装置102でストロークとして取得されたデータに言及する際に交換可能にしばしば使用される。
テーブル生成部204は、一群のフォーム画像に関連するテーブルを生成するソフトウェア及びルーチンである。一実施形態において、テーブル生成部204は、プロセッサ240により実行可能な一群の命令であり、テーブルを生成する後述の機能を発揮する。別の実施形態において、テーブル生成部204はメモリ245に保存されかつプロセッサ240によりアクセス可能及び実行可能である。何れにせよ、テーブル生成部204は、プロセッサ240、通信ユニット255、及び表示アプリケーション105の他のコンポーネントと協働して通信するように適合されている。
テーブル生成部204は、携帯コンピュータ装置102からのストロークを含む一群のフォーム画像をコントローラ202を介して受信し、ストロークを含む一群のフォーム画像からフィールドの画像及びラベルを生成し、フィールドの画像及びラベルを含むテーブルを生成する。理解を促すために言及すると、フォーム画像に対する将来のリファレンスは、記入済みフォームからのストロークデータを含むフォーム画像であると考えられてよい。一実施形態において、テーブル生成部204は、フォーム画像中のストロークのグループ(一群のストローク)を特定し、一群のストロークを包含する境界枠を特定し、境界枠に基づいてフォーム画像からフィールド画像を決定することで、フィールド画像を生成する。一実施形態において、テーブル生成部204は、フィールド画像近辺の領域を分析し、関連する画素のグループをフィールド画像のラベルとして特定し、フォーム画像からラベル画像を切り取ることで、ラベル画像を生成する。テーブル生成部204は、テーブルを生成するように、フィールド画像及びラベル画像を組織する。
テーブル生成部204は、フォームから取得したフォーム画像及びラベル画像に基づいて、一群のフォーム画像に関連するテーブルを生成する。一実施形態において、テーブル生成部204は、ラベル画像の各々をテーブルのカラムヘッダ(列ヘッダ)として指定し、ラベル画像各々に関連するフィールド画像をカラム(列)の各々に含めることで、テーブルを自動的に生成する。別の実施形態ではユーザがラベルを決定する。ラベルはフォーム識別子及びフィールド画像の場所等に基づいて特定される。一実施形態において、テーブル生成部204は、一群のフォーム画像に関連するメタデータを抽出し、メタデータをテーブルの1つ以上のカラム(列)に組み込む。例えば、テーブル生成部204はフォームが記入された日時を抽出し、日付カラムをテーブルに加える。
テーブルに含まれるフィールド画像及びラベル画像を決定することに加えて、テーブル生成部204は、フィールド画像及びラベル画像の順序も決定し、その順序に従ってフィールド画像及びラベル画像を組織する。例えば、テーブル生成部204は、ジェーン(Jane)及びアリス(Alice)のようなユーザが記入した来客名簿フォームからテーブルを生成する。ジェーン及びアリスが記入した来客名簿に関連するメタデータが、ジェーンやアリスより前にフォームを記入したことを示していた場合、テーブル生成部204は、テーブルの「名前」のカラムの中で「アリス」より上位のフィールドに「ジェーン」を配置する。「名前」の画像はユーザにより記入される来客名簿フォームの先頭に配置されているので、テーブル生成部204は、「名前」のカラム(列)をテーブルの最初のカラム(列)として配置してもよい。テーブル生成部204は、テーブルの中でフィールド画像及びラベル画像を別の順序で並べてもよいことを、当業者は認めるであろう。
テーブル内のセル各々の内容は可能性として4つの状態を有する:空の値、画像データ、シンボリックデータ、或いは画像及びシンボリックデータ双方の組み合わせである。空の値は、テーブルの中でセルを生成するのに使用されるフォームのフィールドに、ユーザが情報を入力していないことを示す。画像データは、手で書いたもの、フォームに組み込まれたオブジェクト(例えば、チェックボックス)、ストローク及び他のメディア(例えば、写真)を含む。携帯コンピュータ装置102においてユーザがスタイラス又は指先を使ってフォームを記入すると、画像データが提供される。
シンボリックデータは、ユニバーサルキャラクタセットトランスフォーメーションフォーマット8-ビット(UTF-8)等のようなマシン符号化テキストを含んでもよい。シンボリックデータは、(例えば、「真」及び「偽」のような)その言葉で使用されている文字以外の意味を有する意味論的意味(semantic meaning)を有していてもよい。一実施形態において、シンボリックデータは、テーブルを生成するのに使用されるフォームに含まれている。例えば、フォームが提出された時点を示すフォームのタイムスタンプが、シンボル(象徴的な文字(列))となっていてもよい。他の実施形態において、テーブル生成部204はシンボリック表現モジュール205からシンボリックデータを受信する。別の実施形態において、テーブル生成部204は、アマゾン(登録商標)により提供されているメカニカルタークシステム(Mechanical Turk system)等のようなヒューマンインザループ(HITL)システムに接続し、画像データをシンボリックデータに変換する(図示せず)。更に別の実施形態では、テーブル生成部204は、ネットワーク104を介して画像データをユーザに送信し、ユーザが画像データをマニュアルでシンボリックデータに変換してもよい。更に別の実施形態では、テーブル生成部204はシンボリックデータを生成するように画像データを分類する。
テーブル生成部204はテーブルをフォーム画像のコレクションとしてデータベース(図示せず)に保存する。一実施形態において、データベースはデータストレージ250内に形成されている。一実施形態において、テーブル生成部204は固有のコレクション識別子(ID)をコレクションに割り当てる。
一実施形態において、テーブル生成部204は、ユーザインタフェースエンジン212と通信し、元のコレクション表示をユーザに表示する。表示はコレクションの見え方を指定するコレクション中のデータ群を示す。例えば、表示はコレクションの第1及び第3の列の最初の10行のデータを含む。ユーザに対する表示を行う場合に、ユーザインタフェースエンジン212は、第1及び第3の列の最初の10行のみをユーザに表示する。コレクションの元のコレクション表示(元々のコレクションの表示)は、コレクションが生成される場合に自動的に生成される表示である。テーブル生成部204は、デフォルト設定を利用して、元のコレクション表示を生成し、例えば、コレクションの全ての列を元の表示に含め、元の表示の中で各行をデフォルトの順序で(例えば、フォーム提出日時の降順に)並べ、元の表示に属するセル各々にデフォルトの幅を割り振ること等を行う。テーブル生成部204は、コレクションの元の表示をデフォルト表示として保存し、ユーザインタフェースエンジン212と通信して元の表示をユーザに表示する。コレクションに関するユーザの操作に基づいて、(例えば、1つ、2つ、3つ等のような)任意の数の表示がコレクションについて作成されてよい。任意の表示がデフォルト表示としてユーザにより指定されてよい。表示及び表示の作成法については表示作成モジュール210を参照しながら後述する。
シンボリック表現モジュール205は、テーブルの画像データのシンボリック表現を生成するソフトウェア及びルーチンである。一実施形態において、シンボリック表現モジュール205は、プロセッサ240により実行可能な一群の命令であり、シンボリック表現を生成する後述の機能を発揮する。別の実施形態において、シンボリック表現モジュール205はメモリ245に保存されかつプロセッサ240によりアクセス可能及び実行可能である。何れにせよ、シンボリック表現モジュール205は、プロセッサ240、通信ユニット255、及びIBDMサーバ106の他のコンポーネントと協働して通信するように適合されている。
一実施形態において、シンボリック表現モジュール205は、フィールド画像又はラベル画像の画像データをテーブル生成部204から受信し、例えば、光学文字認識(OCR)、光学マーク認識(OMR)、インテリジェントキャラクタ認識(ICR)、手書き認識、パターン認識等を用いて、画像データに対応するシンボリックデータを生成する。例えば、シンボリック表現モジュール205は、手書き認識の処理を実行し、名前「アミー(Amy)」を手書き形式の彼女の名前から取得する。
別の実施形態において、シンボリック表現モジュール205は、シンボリックデータを生成するように、テーブル中の画像データを分類する。一実施形態において、シンボリック表現モジュール205は、テーブルの列の中にあるフィールド及びラベル画像に含まれている画像データ(例えば、ストローク)を受信し、列の中の画像データの中で類似度(similarity)を判定し、類似度に基づいて(例えば、階層的なクラスタを作成することで)列の中の画像データをK個(例えば、1つ、2つ、3つ、...)のグループに分類し、グループの各々を分類データと共に表現し、分類データをシンボリックデータとして使用する。一実施形態において、シンボリック表現モジュール205は、K個のグループのグループ各々から具体的なストロークを抽出し、具体的なストロークを分類データに変換する。グループは様々なストロークを含んでいるかもしれないが、シンボリック表現モジュール205は、1つの具体的なストロークを選択し、グループを表現する1つの分類を提供する。
シンボリック表現モジュール205は、ストロークが登場する毎にストロークをシンボリックデータに変換するのではなく、ストロークに関連する既存の分類データに基づいて、テーブル中のストロークについてシンボリックデータを生成することが可能であり、これによりシンボリックデータを生成する処理時間を大幅に減らすことができる。変換に分類データを利用することは、テーブルが同じタイプのストロークを含んでいる場合又は同じストロークが複数の列に複数回含まれているような場合に、特に有利である。上記の例を引き続き考察すると、シンボリック表現モジュール205は、「年」の列、「ペット数」の列及び「子の人数」の列で同じタイプのストロークを受信する。例えば、「ペット数」の列のストロークについて6つのグループが形成された場合、シンボリック表現モジュール205は、その6つのグループを利用して、「年」の列及び「子の人数」の列におけるストロークのシンボリックデータを生成することが可能である。
一実施形態において、シンボリック表現モジュール205は、テーブルに含まれているテーブル生成部204からの画像データの一部分をシンボリックデータに変換する。全ての画像データを変換することは演算負担が大きく不要である。なぜなら、多くのデータは変換しなくても判読可能だからである。一実施形態において、シンボリック表現モジュール205はシンボリックデータをデータストレージ250に保存する。別の実施形態において、シンボリック表現モジュール205はシンボリックデータをテーブル生成部204にも送信する。
テーブル生成部204は、表現モジュール205からシンボリックデータを受信し、シンボリックデータを生成元の画像データに関連付け(シンボリックデータは生成元の画像データから生成されている)、テーブルを更新する。更新されたテーブルは、空の値と、画像データと、シンボリックデータと、画像データ及びシンボリックデータとの4種類のデータを含むことが可能である。例えば、テーブル生成部204は、第1のセルが画像データを有しかつ第2のセルが画像データ及びシンボリックデータを有するように、テーブルの最初の列の行(例えば、複数のセル)を更新する。
画像データ及びシンボリックデータは、画像データ及び画像データに関連するシンボリックデータを含む。一実施形態において、テーブル生成部204は何れのタイプのデータが表示されるかに依存して表示を行い、例えば、画像データ及びシンボリックデータを表示する際に、シンボリック表現又は画像データが利用可能であることを強調する他の3種類のデータを表示する場合とは異なる方法で表示する。黄色の背景、下線、フラグ、矢印等のような他の強調の仕方も可能である。一実施形態において、テーブル生成部204は、ユーザインタフェースエンジン212と通信し、ユーザからリクエストを受信したことに応答して、画像及びシンボリックデータに含まれている画像データ又はシンボリックデータの表示を切り替えてもよい。
ステート記録部206は、コレクションの表示を修正する操作をユーザから受けたことに応答してステート(又はステート情報又は状態又は説明)を生成及び記録するソフトウェア及びルーチンである。ステート情報は、例えば、ユーザの操作に関する情報や状態、もしくは説明を含む情報を示してもよい。一実施形態において、ステート記録部206は、プロセッサ240により実行可能な一群の命令であり、シンボリック表現を生成する後述の機能を発揮する。別の実施形態において、ステート記録部206はメモリ245に保存されかつプロセッサ240によりアクセス可能及び実行可能である。何れにせよ、ステート記録部206は、プロセッサ240及び表示アプリケーション105の他のコンポーネントと協働して通信するように適合されている。
ステート記録部206は、コントローラ202と通信し、フォーム画像のコレクションの表示を修正するユーザからの少なくとも1つの操作(以下、「ユーザ操作」と言及する場合がある)を追跡し、少なくとも1つのユーザ操作に基づいて少なくとも1つのステート(又は状態又は説明)を決定及び生成し、少なくとも1つのステート(又は状態又は説明)をデータベースに保存する。ユーザ操作は、コレクションの表示を変更させる任意のユーザの選択を含み、例えば、コレクションの元々の表示における列を並べ替える並べ替え操作をユーザが選択したことや、ユーザが列を移動したこと等を含む。ステート記録部206はユーザの操作を受信し、ユーザの操作は、例えば、ユーザがボタンをクリックしたこと、ユーザがメニューを選択したこと、ユーザが列及び/又は行をドラッグ(又は選択)したこと、ユーザが列及び/又は行の境界をドラッグしたこと等を含む。ユーザは元々の表示又はコレクションの他の表示ついて操作を実行する。
ユーザの操作を受けたことに応答して、ステート記録部206はユーザの操作を記述するステート(又は状態又は説明)を生成する。ステート記録部206は、ユーザの動作を分析し、その分析に基づいてユーザの操作の特徴を決定し、ユーザの操作の特徴を含むようにステート(状態又は説明)を決定する。例えば、ステート記録部206は、コレクションの列をドラッグするユーザの操作を受け付ける。ステート記録部206は、コレクションの中で列を特定し、ユーザがその列を新たな位置へドラッグしているか或いはユーザが列のサイズを変更し直すように列の境界をドラッグしているかを判断する。ユーザの操作が列の境界をドラッグしていた場合、ステート記録部206は、ユーザが列の幅を増やしているのか減らしているのかを判断し、ユーザが望んでいる列のサイズを判別する。ステート記録部206は、少なくとも4つの属性(例えば、列、列をドラッグしている境界、列のサイズの拡大、列のサイズ等)によりこのユーザの操作を特徴付ける(操作の特徴を特定する)。ステート記録部206は、少なくとも4つの属性又は特徴を含むステート(説明又は状態)を作成する。
一実施形態において、ステート記録部206は、一群のカテゴリ及び関連する特徴(属性)を決定し、ユーザの操作を分類又はカテゴライズし、カテゴリに関連する特徴に基づいてユーザの操作のステート(説明又は状態)を作成する。例えば、列を或る場所にドラッグするユーザの操作を受けた場合、ステート記録部206は、そのユーザの操作を列順カテゴリ(column order category)に分類(又はカテゴライズ)し、列順カテゴリに分類されたユーザ操作の特徴が、列の古い位置と列の新しい位置とを含むことを確認し、その特徴を含むようにステートを作成する。一実施形態において、ステート記録部206は、表示優先度のカテゴリ、列順のカテゴリ、日付の選別(フィルタリング)のカテゴリ、列の選別(フィルタリング)のカテゴリ、ズームのカテゴリ、ラベルの優先度のカテゴリ、並べ替えのカテゴリ、列の幅のカテゴリ等を含む一群のカテゴリを決定する。あるカテゴリに分類されたユーザの操作は、コレクションの表示を修正することになり、コレクションの新たな表示を生成することになる。一群のカテゴリに属するカテゴリ各々におけるユーザの操作に基づいて生成された表示の例は図7A-図7Hに示されている。
一実施形態において、ステート記録部206は、少なくとも1つのステートを生成し、少なくとも1つのステートをデータベースに保存する。別の実施形態において、ステート記録部206は少なくとも1つのステートを問い合わせエンジン208にも送信する。
問い合わせエンジン208は、ステート記録部206から受信した少なくとも1つのステートに基づいて問い合わせを生成し、データベースの中でその問い合わせを実行するソフトウェア及びルーチンである。一実施形態において、問い合わせエンジン208は、プロセッサ240により実行可能な一群の命令であり、問い合わせを生成して実行する。別の実施形態において、問い合わせエンジン208はメモリ245に保存されかつプロセッサ240によりアクセス可能及び実行可能である。何れにせよ、問い合わせエンジン208は、プロセッサ240及び表示アプリケーション105の他のコンポーネントと協働して通信するように適合されている。
問い合わせエンジン208は、フォーム画像のコレクションに対する少なくとも1つのユーザ操作を記述する少なくとも1つのステートを受信し、少なくとも1つのステートを受信したことに応じて問い合わせを生成する。例えば、問い合わせエンジン208は、4つの列以外の列を隠すことを示す少なくとも1つのステートを受信したことに応じて、表示するコレクションのうちその4つの列を選択する問い合わせ又はクエリを構造化問い合わせ言語(Structured Query Language:SQL)で生成する。
一実施形態において、問い合わせエンジン208は、問い合わせ又はクエリを生成し、コレクションを保存しているデータベースにおいて問い合わせを実行し、コレクションの表示を生成するために問い合わせの結果を表示作成モジュール210に送信する。一実施形態において、問い合わせエンジン208は問い合わせと問い合わせに関連する表示とをデータベースに保存する。別の実施形態において、問い合わせエンジン208は、ユーザからのリクエストを受信したことに応答して、コレクションの表示に関連する問い合わせをデータベースから抽出し、データベースにおいてその問い合わせを実行し、表示作成モジュール210及びユーザインタフェースエンジン212と通信を行ってその表示をユーザに対して行う。
表示作成モジュール210はコレクションの表示を作成するソフトウェア及びルーチンである。一実施形態において、表示作成モジュール210は、プロセッサ240により実行可能な一群の命令であり、コレクションの表示を生成する。別の実施形態において、表示作成モジュール210はメモリ245に保存されかつプロセッサ240によりアクセス可能及び実行可能である。何れにせよ、表示作成モジュール210は、プロセッサ240及び表示アプリケーション105の他のコンポーネントと協働して通信するように適合されている。
テーブル生成部204は、フォーム画像からテーブルを生成し、そのテーブルをコレクションとしてデータベースに保存する。テーブル生成部204は、コレクションの元の表示を自動的に生成し、ユーザインタフェースエンジン212と通信して元の表示をユーザに対して表示する。ステート記録部206は、コントローラ202と通信して元の表示に対するユーザによるユーザ操作を追跡し、ユーザ操作に基づいてステートを作成し、ステートを問い合わせエンジン208に送信する。問い合わせエンジン208はステートを受信し、ステートに基づいて問い合わせを生成し、データベースにおいて問い合わせを実行する。表示作成モジュール210は、問い合わせの実行に基づいて問い合わせに関連するコレクションの新たな表示を生成する。
テーブル生成部204は、ユーザによる操作を受けることなくコレクションの元の表示を作成する。表示作成モジュール210は、少なくとも1つのユーザの操作をユーザから受信したことに応答して、元の表示ではないコレクションの表示を作成する。一実施形態において、表示作成モジュール210は、コレクションの元の表示に対するユーザの操作に基づいて、コレクションの異なる表示を作成する。別の実施形態において、表示作成モジュール210は、コレクションの元の表示に対するユーザの操作に基づいてコレクションの第1の表示を作成し、コレクションの第1の表示に対するユーザの操作に基づいてコレクションの第2の表示を作成する等の処理を行う。
図3Aは、ユーザインディゴ(Indigo)により記入された例示的な調査フォーム300を示す。フォームは、ファーストネーム(名前)、日付、カリフォルニア出身であるか又はカリフォルニア出身でないかの選択肢、郵便番号、電話番号、電子メールアドレス、現在の家又は部屋での年数、ペットの数、子の人数、飲み物の好み、カリフォルニアを好む理由、及びこの調査の記入がどの程度困難であったかについての選択肢に関するフィールドを含んでいる。
テーブル生成部204は、調査フォーム300の画像データの部分をシンボリックデータに変換し、ユーザが記入した調査フォームからテーブルを生成する。テーブルの各セルは、画像データ、シンボリックデータ、画像データ及びシンボリックデータ、空白値のうちの何れかを含む。テーブル生成部204は、テーブルをコレクションとしてデータベースに保存し、コレクションの元の表示を作成する。テーブル生成部204から指示を受けたユーザインタフェースエンジン212は、図3Bの具体例のユーザインタフェース330に示すようなユーザインタフェースを準備し、コレクションの元の表示332をユーザに表示する。元の表示332は、コレクションの全ての列及び列を、(例えば、「日付」の列で示されている)フォームの提出日の降順に、デフォルト幅のセル各々と共に含んでいる。ユーザインタフェース330の元の表示332には画像データしか含まれていないが(例えば、「ファーストネーム」、「日付」、「郵便番号」等のようなフィールドでのユーザによる手書き)、元の表示332は画像データ及びシンボリックデータの双方を含んでいてもよい。例えば、元の表示332は、「CA出身」及び「CA以外の出身(又はCA出身でない)」のフィールドに示されている画像データに関連する「真」又は「偽」のようなシンボリックデータを含んでいてもよい。波線の楕円334は、コレクションの元の表示332が72個の行を含んでいることを示す。
元の表示332を眺めるユーザは、元の表示について少なくとも1つの操作を実行することが可能である。少なくとも1つの操作をユーザから受けたことに応じて、表示作成モジュール210は元の表示332を修正し、修正後の表示を作成する。表示作成モジュール210は、ユーザインタフェースエンジン212と通信し、ユーザインタフェース350が図3Cに示す修正後の表示352を表示するようにする。元の表示332の72行と比較すると、図3Cの波線の楕円354は修正後の表示352が11行しか含んでいないことを示す。更に、修正後の表示352は、より少ない列を異なる順序で含んでおり、図3Cでは領域356に何の列もないが、図3Bでは全ての領域に列が示されている。ユーザが修正後の表示を保存することを希望する場合、ユーザはプラスボタン「+」345を選択することができる。ユーザが修正を行った場合に、プラスボタン345は利用可能になりアクティブにされる。IBDMサーバ106に保存されている少なくとも1つの表示が存在している場合、マイナスボタン「-」をアクティブにすることができる。すなわち、マイナスボタンは、ユーザがプラスボタンを使って少なくとも1つの表示を保存するまで灰色になっている(選択できない状態になっている)。ユーザがIBDMサーバ106に保存されている表示を削除する場合、マイナスボタンがアクティブにされる(或いは、保存の状態がデアクティベートされる)。
表示作成モジュール210は、一群の情報により規定されるコレクションの表示を作成してもよい。一実施形態において、一群の情報は、コレクションID、表示の名称、表示の優先度、列の順序、日付の選別(フィルタ)、列の選別(フィルタ)、現在の(表示)拡大率、ラベルの優先度、並べ替えの順序及び列の幅等を含む。
表示作成モジュール210は、固有のIDと共に1つのコレクションの表示を作成してもよい。例えば、第1のコレクションではフィールドがシンボルで表現されたデータを含み、第2のコレクションでは同じフィールドが日付のストロークを含んでいる場合、テーブル生成部204は、それら同じフィールド及び列を有する2つのコレクションについて2つの異なるIDを割り振る。表示作成モジュール210は第1のコレクション又は第2のコレクションの何れかについて表示を作成することが可能である。一実施形態において、表示作成モジュール210はコレクションに関連するコレクションIDを表示に含める。
表示作成モジュール210は、ユーザインタフェースエンジン212により生成されたユーザインタフェースを介してユーザとやり取りを行い、ユーザの操作に基づいて作成されたコレクションの表示に名称を割り振ってもよい。コレクションの表示各々は固有の名称を有する。「元の(又はオリジナル)」及び「新たな表示」という名前を使用できないことを除いて、表示の名称について如何なる制約も存在しない。これら2つの名称は特殊な用途のために確保されている。例えば、「元の(又はオリジナル)」という名称は、コレクションの元の表示のために予約されている。
表示作成モジュール210は、表示において表示の優先度を利用して表示を行ってもよい。表示が同じセルの中に画像データ及びシンボリックデータを伴う1つ以上のセルを含んでいた場合、表示の優先度が、画像データ又はシンボリックデータが1つ以上のセルの中でユーザに表示されるか否かを決定する。一実施形態において、表示作成モジュール210は、モードボタンの選択をユーザから受けたことに応じて表示の優先度を変更する。例えば、図3B及び図3Cはストロークモードでデータを示している。モードボタンがストロークモードである場合、画像及びシンボリックデータに含まれている画像データが表示される。モードボタンがシンボリックデータであった場合、画像及びシンボリックデータに含まれているシンボリックデータが表示される。モードボタンの選択によらず、データ、画像データ、シンボリックデータ及び空白値の他の3種類が同時に表示されてもよい。表示の優先度の切り替えに基づいて作成される表示の具体例について図7Aに示されており、この点については後述する。
表示作成モジュール210は表示の列の順序を決定することに基づいて表示を作成してもよい。表示作成モジュール210は、ステート記録部206及び問い合わせエンジン208から受信したデータに基づいて、何れの列が表示に含まれるか、及び列の中で如何なる順序で表示を示すかを決定し、指定された順序で列を含むように表示を作成する。表示に含まれない列は隠される(秘匿される)。表示は少なくとも1つの列を含む。列の順序を決定することに基づいて作成される表示の具体例については図7Bに示されており、この点については後述する。
表示作成モジュール210は1つ以上の日付の選別(フィルタリング)を実行することに基づいて表示を作成する。日付情報を含むフォーム画像のコレクションの場合(例えば、提出日の列が、フォームが記入された時点を示していた等の場合)、表示作成モジュール210は、ステート記録部206及び問い合わせエンジン208から受信したデータに基づいて、1つ以上の日付フィルタを決定し、1つ以上の日付フィルタから時間的な範囲を特定し、その時間的範囲内のコレクションデータを表示に含める。
一実施形態において、日付フィルタはタイプを含む。タイプは、例えば、全て、今月、先月、過去Nヶ月、現在の四半期、前の四半期、最新のN四半期、今年、去年、この月、過去N年、今週、先週、過去N週、今日、昨日、過去N日、間隔、合間、周期、前、後等を含んでよい。様々なタイプが様々なパラメータに関連付けられる。例えば、前及び後のタイプは時間単位パラメータを含み(例えば、2013年1月12日以前、又は2012年12月25日以降)、過去Nヶ月のタイプ(又は過去N年、過去N週、過去N日)は時間単位を含まずにパラメータNを含み(例えば、最新の6ヶ月)、間隔タイプは2つのパラメータを含む(開始日及び終了日)。日付フィルタを利用することに基づいて作成される表示の具体例については図7Cに示されており、この点については後述する。
表示作成モジュール210は1つ以上の列フィルタ処理を実行することに基づいて表示を作成してもよい。表示作成モジュール210は、ステート記録部206及び問い合わせエンジン208から受信したデータに基づいて1つ以上の列フィルタ処理を決定し、1つ以上の列フィルタ処理によりフィルタ処理基準を決定し、列のうち何れのセルがフィルタ処理基準に合致するかを判断し、フィルタ処理基準に合致する表示を作成する。
一実施形態において、表示作成モジュール210は日付タイプに基づく列フィルタ処理を決定してもよい。例えば、表示作成モジュール210は、画像データ及び空の値を有する2種類のデータを除外するように列フィルタ処理を決定し、シンボリックデータ或いは画像データ及びシンボリックデータのみを含むように表示を作成する。
表示作成モジュール210は、画像がないこと、ストローク全長、画像の幅、画像の高さ、画像のサイズ、ストロークの数、類似するストロークのグループ、及び黒い画素の割合(パーセンテージ)等を含むオプションに基づいて画像データのフィルタ処理を行うことが可能である。例えば、表示作成モジュール210は2センチメートルより長いストローク全長を有する画像を含むように表示を作成してもよい。表示作成モジュール210は、正規表現(regular expression)、計算、論理、含む、含まない等のオプション(選択肢)に基づいてシンボリックデータをフィルタ処理することが可能である。例えば、表示作成モジュール210は、「^J[a-zA-Z]」という正規表現を含む列フィルタ処理を受け付け、「名前」の列の中で「J」で始まる名前を含むように表示を作成する。
別の実施形態において、表示作成モジュール210はクラスタに基づくカラムフィルタ処理又は列選別処理を決定してもよい。この場合、列に含まれている実際の画像データに従って列をフィルタリングするのではなく、表示作成モジュール210は、画像データ同士の類似度に基づいて、列に属する画像データをK個(例えば、1つ、2つ、3つ、...)のグループに分類し、その分類に基づいて列をフィルタリング又は選別する。例えば、「星(Star)」の列が、1個ないし5個の間でランク付けされたユーザランク(又はユーザの格付け)を示す場合、表示作成モジュール210は、分類されたストロークに基づいて、3つ、4つ又は5つのランクとなった結果を含むように表示を作成することが可能である。例えば、ジョン(John)は彼のタブレットでスタイラスを用いて「星」の列のフィールドに数値2を書き込んだとする。表示作成モジュール210が、ジョンの手書きランキングは数「2」に類似していると判断し、それを2つのグループ(の一方)に分類する場合、結果の表示はジョンのランキングを含まないことになる。
別の実施形態において、表示作成モジュール210は、時間、日付等に基づく列のフィルタ処理を決定してもよい。例えば、表示作成モジュール210は、第1の時間及び第2の時間の間の収集日を示すように表示を作成する。列フィルタ処理を実行することに基づいて作成される表示の具体例については図7Dに示されており、この点については後述する。
表示作成モジュール210は、現在のズーム率(又は倍率)を決定し、現在のズーム率で表示を作成してもよい。表示作成モジュール210は、ステート記録部206及び問い合わせエンジン208から受信したデータに基づいて、現在のズーム率又は倍率(例えば、10%、25%、100%、150%、300%等)を決定する。現在のズーム率で作成される表示の具体例については図7Eに示されており、この点については後述する。
表示作成モジュール210は表示を行う場合のラベル優先度を利用してもよい。コレクションは列ヘッダにラベルを含む。コレクションの列ヘッダが画像データ及びシンボリックデータを含んでいる場合、ラベル優先度は、列ヘッダの中で画像データを表示するか又はシンボリックデータを表示するかを決定する。一実施形態において、表示作成モジュール210は、ユーザからのラベルボタンの選択を受けたことに応じてラベル優先度を変更する。ラベルボタンが画像モードにおけるものである場合、画像データ及びシンボリックデータのうちの画像データが列ヘッダに表示される。ラベルボタンがシンボリックモードにおけるものである場合、画像データ及びシンボリックデータのうちのシンボリックデータが列ヘッダに表示される。ラベル優先度の切り替えに基づいて作成される表示の具体例については図7Fに示されており、この点については後述する。
表示作成モジュール210は列のソート処理(並べ替えの処理)に基づいて表示を作成してもよい。表示作成モジュール210は、ステート記録部206及び問い合わせエンジン208と通信を行い、何れの列を並べ替えるか及び列を並べ替える順序を決定する。列が画像データ及びシンボリックデータを含む場合、表示作成モジュール210は、並べ替えについて指定された優先度に基づいて、画像データ又はシンボリックデータと共に、画像及びシンボリックデータを並べ替えるか否かを決定する。一実施形態において、並べ替えを行う様々な段階が存在してもよく、例えば、第1段階はデータタイプ各自の優先度を特定し、第2段階はデータタイプ各々の中で並べ替えを行ってもよい。例えば、コレクションの「名前」の列は、シンボリックデータ(例えば、印刷された名前)よりも高い画像データの第1の優先度(例えば、手書きの名前)と、「名前」の列の中で画像データを並べる際の第2の優先度とを、「名前」の列の手書き名及び印刷名のストローク数の昇順にアルファベット順に含んでいる。一実施形態において、表示作成モジュール210は複数の列の並べ替えに基づいて表示を作成する。複数の列の並べ替えに基づいて作成される表示の具体例については図7Gに示されており、この点については後述する。
表示作成モジュール210は列の幅を決定することに基づいて表示を作成してもよい。表示作成モジュール210は、ステート記録部206及び問い合わせエンジン208から受信したデータに基づいて表示の中で列挙される列(又はカラム)各々の幅を決定し、決定した幅の中に各々の列を含めるように表示を作成する。列の幅を決定することに基づいて作成される表示の具体例については図7Hに示されており、この点については後述する。
表示(の内容)が作成されると、表示作成モジュール210は、その表示をユーザに対して行うようにユーザインタフェースエンジン212がユーザインタフェースを提供するように指示する。一実施形態において、ユーザインタフェースは表示を現在の表示としてデータベースに保存する選択肢をユーザのために含む。ユーザインタフェースは、表示のリストから存在する表示を選択する選択肢、存在する表示を修正する選択肢、存在する表示を削除する選択肢、存在する表示を複製する選択肢、又は存在する表示の名称を変更する選択肢をユーザのために含んでいる。表示を選択、保存及び削除する選択肢については、図8A-8Cを参照しながら後述する。
一実施形態において、表示作成モジュール210はユーザ同士の間で表示を切り替えてもよい。表示作成モジュール210は、表示アプリケーション105の他のコンポーネントと通信し、第1のユーザからの少なくとも1つの操作に基づいてコレクションの第1の表示(第1のコレクション表示)を作成し、第1のコレクション表示を第1のユーザに表示する。表示作成モジュール210は、表示を保存する指示を第1のユーザから受けたことに応じて、第1のコレクション表示をデータベースに保存する。表示作成モジュール210は、保存した第1の表示を、コレクションの既存の表示(既存のコレクション表示)のリストに含める。ユーザインタフェースエンジン212は、既存の表示のリストを第2のユーザに提示し、第1の表示を指す選択肢を第2のユーザから受けたとする。これは第2のユーザがコレクションにアクセスしたことを仮定している。例えば、第1及び第2のユーザは同じワーキンググループに所属し、グループの各メンバはコレクションにアクセスできる場合である。第2のユーザからそのような選択をコントローラ202を介して受信したことに応答して、問い合わせエンジン208は、データベース内の第1の表示に関連する問い合わせ(クエリ)を抽出し、データベースにおいて問い合わせを実行する。表示作成モジュール210は、実行した問い合わせに基づいて第1の表示を作成し、第1のコレクション表示を第2のユーザに表示するようにユーザインタフェースエンジン212を指示する。
表示は、日付フィルタ処理に関する情報、列フィルタ処理に関する情報、並べ替え順序に関する情報及びその他の情報を含んでいてもよい。ユーザ間で表示を切り替えることで、ユーザは他のユーザの操作に基づいて作成された表示による情報を受信することが可能である。ユーザはその情報を含む新たな表示を作成しはしない。例えば、アリス(Alice)が、「H」という文字で始まる名前を有する人々の情報を入手したいとする。アリスは、彼女が自ら表示を作成するほどには時間をかけずに、そのような情報を含む既存の表示を選択することができる。
ユーザ間で表示を切り替える又は共有することは、新たな表示を作り直すのにかかる分だけ時間を減らすことにもなる。例えば、過去20日のうちに誰がジョン(John)を訪れたかを、アミー(Amy)が知りたいとする。アミーはコレクションにアクセスする。アミーは、コレクションの既存の表示(既存のコレクション表示)のリストを確認し、「最近の来客(Recent Visitor)」という名称の表示がライアン(Ryan)による操作に基づいて作成されていることを発見する。アミーはその「最近の来客」の表示を求めるリクエストを開始し、「最近の来客」の表示を受け取る。「最近の来客」の表示は先月の来客名を含んでいる。たとえこの表示がアミーの要求に完全に合致していなかったとしても、アミーにとってその表示を修正することは容易であり、過去20の間にジョンを訪問した者を示す表示を別途入手する手間は減少する。
ユーザ同士の間で表示が切り替えられる場合、問い合わせエンジン208はデータベース中の表示に関連する問い合わせを抽出し、問い合わせを再度実行する。問い合わせエンジン208は、現在のデータベースで問い合わせを実行するので、表示は、現在のデータベースの中で最新の情報とともに更新される。例えば、(例えば、毎日の交通データのコレクションのように)コレクションは日々の更新された日又は日時の履歴(ログ)を含んでいる。例えば、第1の表示は、何れの日であっても4PM及び6PMの間に生じた全ての交通事故を示すように作成される。第1の表示が作成された数日後に、第2のユーザが第1の表示を要求した場合、第1の表示に関する問い合わせの再実行は、第1の表示より多い数の行を対象とすることになる。なぜなら、第1の表示が作成された後数日間の間に、更に多くの交通事故が起こっているかもしれないからである。
ユーザインタフェースエンジン212はユーザインタフェースを表示するための図形データを生成するソフトウェア及びルーチンである。一実施形態において、ユーザインタフェースエンジン212は、プロセッサ240により実行可能な一群の命令であり、ユーザインタフェースを生成する。別の実施形態において、ユーザインタフェースエンジン212はメモリ245に保存されかつプロセッサ240によりアクセス可能及び実行可能である。何れにせよ、ユーザインタフェースエンジン212は、プロセッサ240及び表示アプリケーション105の他のコンポーネントと協働して通信するように適合されている。
一実施形態において、ユーザインタフェースエンジン212はユーザに対してコレクションの表示を行うための図形データを生成する。一実施形態において、ユーザインタフェースエンジン212は、データベース内のフォームのコレクションのテーブルをテーブル生成部204が並べ替えたことに応答して、コレクションの元の表示をユーザに表示するためのユーザインタフェースを生成する。別の実施形態において、ユーザインタフェースエンジン212は、ユーザから少なくとも1つのユーザ操作を受けたことに応じて新たな表示をユーザに表示するためのユーザインタフェースを生成する指示を、表示作成モジュール210から受信する。更に別の実施形態において、ユーザインタフェースエンジン212は、ユーザからリクエストを受信したことに応答して、データベースから抽出した既存の表示をユーザに表示するユーザインタフェースを生成する。
別の実施形態において、ユーザインタフェースエンジン212は、ユーザ入力を受信するユーザインタフェースを生成する。一例として、ユーザインタフェースエンジン212は、コレクションの表示を修正するユーザ操作(例えば、コレクションの列を並べ替えるオプションを選択すること等)を受信するようにユーザインタフェースを提供する。別の例において、ユーザインタフェースエンジン212は、表示を選択し、表示を保存し、表示を削除し、表示の名称を変更し、既存の表示を修正し、既存の表示を複製するするためのユーザインタフェースをユーザのために提供する。
<方法>
図4-図6を参照すると、本発明に関する方法が詳細に示されている。図4はコレクション表示を作成する方法の一例をフローチャートで示す。表示アプリケーション105は、テーブル生成部204、ステート記録部206、表示作成モジュール210及びユーザインタフェースエンジン212を含む。テーブル生成部204は、携帯コンピュータ装置102からフォーム画像を受信し、フォーム画像からテーブルを生成する(204)。テーブルは画像データ及びシンボリックデータを含む。一実施形態において、テーブル生成部204は、一群のフォーム画像からフィールド及びラベルの画像を生成し、フィールド画像及びラベル画像を含むテーブルを生成する。
テーブル内のセルは、空の値、画像データ、シンボリックデータ、画像及びシンボリックデータという4種類の状態を可能性として有する。空の値は、テーブルを生成するのに使用されるフォームのフィールドにユーザが情報を入力していないことを示す。画像データは、手書き、フォームに組み込まれているオブジェクト(例えば、チェックボックス)、ストローク及びその他の媒体(例えば、写真)を含む。画像データは、ユーザが携帯コンピュータ装置102でスタイラス又は指先を使ってフォームを記入した場合に、提供される。
シンボリックデータは、ユニコードキャラクタとして保存された情報(例えば、UTF-8エンコード方式を用いて得られた情報)を含む。一実施形態において、シンボリックデータは、テーブルを生成するために使用されるフォームに含まれている。別の実施形態において、テーブル生成部204は、フォームに含まれている画像データの一部分をシンボリックデータに変換することでシンボリックデータを生成する。テーブル生成部204は、画像データを変換してシンボリックデータを生成し、シンボリックデータを画像データに関連付け、シンボリックデータ及び画像データの双方を、テーブルの1つのセルで、画像及びシンボリックデータとして保存する。
テーブル生成部204は、テーブルをフォーム画像のコレクションとしてデータベースに保存する(404)。ステート記録部206は、コレクションについて少なくとも1つのユーザ操作を受け付ける(406)。一実施形態において、ステート記録部206は、ユーザインタフェースエンジン212と通信し、フォーム画像のコレクション表示を修正するユーザからの少なくとも1つの操作(以後、「ユーザ操作」と言及される場合がある)を追跡し、少なくとも1つのユーザ操作に基づいて少なくとも1つのステート情報又はステート(state)を決定及び作成し、少なくとも1つのステートをデータベースに保存する。ステート情報は、例えば、ユーザの操作に関する情報や状態、もしくは説明を含む情報等を示してもよい。ユーザ操作はコレクション表示を変更させる任意のユーザ選択を含み、例えば、ユーザは並べ替えオプションを選択して元のコレクション表示内の列を並べ替える、或いはユーザは列を移動させる。
表示作成モジュール210は、少なくとも1つのユーザ操作に基づいてコレクション表示を作成する(408)。表示作成モジュール210は、ユーザに対してコレクション表示を表示するための図形データを生成する(410)。
図5は、コレクション表示を作成する方法の別の例を示すフローチャート500である。表示アプリケーション105は、テーブル生成部204、ステート記録部206、問い合わせエンジン208、表示作成モジュール210、及びユーザインタフェースエンジン212を含む。テーブル生成部204は、携帯コンピュータ装置102からフォーム画像を受信し、フォーム画像からテーブルを生成する(502)。テーブルは、画像データと、シンボリックデータと、画像データ及びシンボリックデータを伴う少なくとも1つのセルとを含む。テーブル生成部204は、テーブルをコレクションとしてデータベースに保存する(504)。ステート記録部206は、フォームの第1のコレクション表示を修正するための少なくとも1つの操作をユーザから受信する(506)。ステート記録部206は、少なくとも1つのユーザ操作を説明する少なくとも1つのステートを作成する。一実施形態において、ステート記録部206は、ユーザ操作を分析し、分析に基づいてユーザ操作を特徴付け、ユーザ操作の特徴を含むようにステートを決定する。ステート記録部206は、少なくとも1つのステートをデータベースに保存する(510)。
問い合わせエンジン208は、少なくとも1つのステートに基づいて問い合わせ(又はクエリ)を生成する(512)。例えば、問い合わせエンジン208は構造化クエリ言語(Structured Query Language:SQL)で問い合わせ又はクエリを生成し、4つの列以外の全てを隠すことを示す少なくとも1つのステートを受信したことに応じて、コレクションの4つの列を選択する。問い合わせエンジン208は、問い合わせをデータベースに保存する(514)。表示作成モジュール210は、少なくとも1つのステート及び問い合わせ(又はクエリ)に基づいて第2のコレクション表示を生成する(516)。作成モジュール210は、第2の表示をユーザに対して表示するための図形データを生成するように、ユーザインタフェースエンジン212を指示する。通信ユニット255は、例えば、図形データをユーザ装置103に送信することで、第2の表示をユーザに提供する(520)。
図6は、ユーザ同士の間で表示を切り替える方法の一例を示すフローチャート600である。表示アプリケーション105は、テーブル生成部204、ステート記録部206、問い合わせエンジン208、表示作成モジュール210、及びユーザインタフェースエンジン212を含む。表示作成モジュール210は、第1のユーザからの少なくとも1つの操作に基づいて第1のコレクション表示を作成する(602)。この作成は、第1のコレクション表示に関連する問い合わせを生成し、問い合わせを実行することを含む。一実施形態において、ステート記録部206は、第1のユーザからのユーザ操作を追跡し、ユーザ操作に基づいてステートを作成し、ステートを問い合わせエンジン208に送信する。問い合わせエンジン208は、ステートを受信し、ステートに基づいて問い合わせを生成し、データベースにおいて問い合わせを実行する。表示作成モジュール210は、問い合わせの結果に基づいて第1の表示(第1のコレクション表示)を作成する。表示作成モジュール210は、第1のコレクション表示をデータベースに保存する(604)。
表示作成モジュール210は、ユーザインタフェースエンジン212と通信し、第1のコレクション表示を含むコレクション表示のリストを第2のユーザに提示するための図形データを生成する。第2のユーザはコレクションに対するアクセス権を有する。ユーザインタフェースエンジン212は、第1のコレクション表示の選択(第1のコレクション表示が選択されたことの通知)を第2のユーザから受信する(608)。例えば、第1及び第2のユーザは同じワーキンググループに所属し、グループ内の各メンバはコレクションにアクセスできる。問い合わせエンジン208は、選択を受信したことに応じて、第1のコレクション表示に関する問い合わせをデータベースから抽出する(610)。問い合わせエンジン208は、データベースにおいて、第1のコレクション表示に関連する問い合わせを再実行する(612)。ユーザインタフェースエンジン212は、第1のコレクション表示を第2のユーザに表示するための図形データを生成する(614)。
<ユーザインタフェースの具体例>
図7A-図7Hはユーザインタフェースエンジン212により生成されたユーザインタフェースの具体的な図形表現を示す。各図はテーブルについての2つのコレクション表示を含む。各図において、第1のユーザインタフェース332は図3Bにも示されている元のコレクション表示である。これはコンボボックス702において「オリジナル」又は「元の表示」という名称で示されている。各図の下側に示されている第2のユーザインタフェースは、第1のユーザインタフェース332を修正する少なくとも1つのユーザ操作に基づいて作成された修正後のコレクション表示を示す。これはコンボボックス704において「新表示」という名称で示されている。
図7Aはテーブルについての具体的な2つのコレクション表示700を示す。第1のユーザインタフェースは元の表示332を含み、第2のユーザインタフェースは修正された表示701を含む。修正後の表示701は元の表示332の表示優先度(又は表示の好み)をユーザが変更したことに基づいて作成されている。ステート記録部206は元の表示332に関するモードボタンの選択をコントローラ202から受信する。ユーザは「ストローク」706から「シンボリック」708へモードボタンを変更することを選択し、これは、画像データを表示することからシンボリックデータを表示することへの表示の好みの変更を示す。ステート記録部206はそのユーザ選択に基づいてステートを作成し、ステートを問い合わせエンジン208に送信する。問い合わせエンジン208はステートに基づいて問い合わせ又はクエリを生成し、問い合わせ又はクエリを実行する。表示作成モジュール210は問い合わせ又はクエリの動作結果に基づいて修正後の表示701を作成する。元の表示332及び修正後の表示701の双方において、ユーザインタフェースエンジン212は、「郵便番号」、「ペット数」、「子の人数」、「ミルク」及び「お茶」の列で(修正前後で)同じ画像データを表示するように図形データを生成する。元の表示332と修正後の表示701との間の相違は、「ファーストネーム」、「日付」、「電話」、「電子メール」、「年数」の列と、「CA出身」の列及び「CA以外の出身」の列のうちの幾つかのセルとにおいて、画像データ及びシンボリックデータの表示(の違い)に現れている。モードボタンが「ストローク」である元の表示332では、ユーザインタフェースエンジン212は、「ファーストネーム」、「日付」、「電話」、「電子メール」及び「年数」の列で手書きを表示し、かつ「CA出身」の列及び「CA以外の出身」の列のうちの幾つかのセルで画像を表示している。これらの列のデータの全てがシンボリックデータとして利用可能であったわけではない。例えば、「ファーストネーム」の列において、「インディゴ(Indigo)」及び「エリシャ(Elisha)」は画像データのまま残っている。モードボタンが「シンボリック」である修正後の表示701では、ユーザインタフェースエンジン212は、「ファーストネーム」、「日付」、「電話」、「電子メール」、「年数」の列と、「CA出身」の列及び「CA以外の出身」の列のうちの幾つかのセルとにおいて、印刷フォントの文字(printed text)を表示している。
図7Bはテーブルについての具体的な2つのコレクション表示710を示す。第1のユーザインタフェースは元の表示332を含み、第2のユーザインタフェースは修正された表示711を含む。表示作成モジュール210はステート記録部206及び問い合わせエンジン208と通信し、ユーザによる元の表示332からの列の順序の変更に基づいて修正後の表示711を作成する(例えば、列を選択して或る位置までドラッグしたり、列を選択して隠したりしてもよい)。元の表示332において、ユーザインタフェースエンジン212は1番目の列712に「ファーストネーム」を表示し、2番目の列714に「日付」を表示している。元の表示332においてユーザインタフェースエンジン212は他の10個の列(例えば、「CA出身」、「CA以外の出身」、「郵便番号」等)も表示している。修正後の表示711では、ユーザインタフェースエンジン212は1番目の列716に「日付」を表示し、2番目の列718に「ファーストネーム」を表示している。修正後の表示711においてユーザインタフェースエンジン212は他の8個の列も表示している。「ミルク」の列及び「お茶」の列は修正後の表示711から排除されている。修正後の表示711において、例えば灰色で表示される領域719では列が無い状態で示される。
図7Cはテーブルについての具体的な2つのコレクション表示720を示す。第1のユーザインタフェースは元の表示332を含み、第2のユーザインタフェースは修正された表示721を含む。修正後の表示721は日付選別処理(日付フィルタリング処理)を実行することに基づいて作成される。修正後の表示721はユーザにより指定された時間範囲内のコレクションデータを含む。破線の楕円722は、元の表示332が72行を含んでいることを示す。破線の楕円724は、修正後の表示721が、日付フィルタリング処理に合致する23行を含んでいることを示す。日付フィルタリング処理又は日付フィルタは、元の表示332の右下隅にあるドロップダウンメニューに示されている。ユーザは、ドロップダウンメニューから「インターバル」のタイプ725を選択し、編集ボックス726において開始日を指定しかつ編集ボックス728において終了日を指定する。ユーザは拡張可能なカレンダボックス727を利用して開始日及び終了日を選択することも可能である。
図7Dはテーブルについての具体的な2つのコレクション表示730を示す。第1のユーザインタフェースは元の表示332を含み、第2のユーザインタフェースは修正された表示731を含む。修正後の表示731は列選別処理(カラムフィルタ処理)を行うことに基づいて作成される。修正後の表示731はカラムフィルタ処理に合致するコレクションデータを含む。この例の場合、カラムフィルタ処理は、カリフォルニア出身でない人々を除外するように選別する。その結果、修正後の表示731の各行は、「CA出身」を選択し「CA以外の出身」を選択していない人々に関連しているので、修正後の表示731は破線の楕円734で示されているように45行を含んでいる一方、元の表示332は破線の楕円732で示されているように72行を含んでいる。
図7Eはテーブルについての具体的な2つのコレクション表示740を示す。第1のユーザインタフェースは元の表示332を含み、第2のユーザインタフェースは修正された表示741を含む。修正後の表示741は、元の表示332をユーザがズームする(表示倍率を変更する)ことに基づいて作成される(例えば、ユーザはポップアップメニューを選択する)。ユーザインタフェースエンジン212は、元の表示332では8つの表を表示しているが、修正後の表示741では6つの行を表示している。ユーザインタフェースエンジン212は、元の表示332では12個の列を表示しているが(最後の列は「お茶」の列)、修正後の表示741では8個の列を表示している(最後の列は「ペット数」の列の一部分)。
図7Fはテーブルについての具体的な2つのコレクション表示750を示す。第1のユーザインタフェースは元の表示332を含み、第2のユーザインタフェースは修正された表示751を含む。修正後の表示751は、ユーザが元の表示332のラベル優先度(好み)を変更することに基づいて作成される。ユーザがユーザインタフェース750のラベルボタンを選択すると、ラベル優先度(好み)が変更される。元の表示332においてラベルボタンは「シンボリック」752であり、ユーザインタフェースエンジン212は、列ヘッダ「郵便番号」756及び列ヘッダ「電話」758のような列ヘッダに印刷フォント文字を表示している。修正後の表示751ではラベルボタンが「ストローク」754であり、ユーザインタフェースエンジン212は、列ヘッダ「郵便番号」757及び「電話」759のような、フォームに含まれている列ヘッダの画像を表示している。
図7Gはテーブルについての具体的な2つのコレクション表示760を示す。第1のユーザインタフェースは元の表示332を含み、第2のユーザインタフェースは修正された表示761を含む。修正後の表示761は元の表示332の少なくとも1つの列をユーザが並べ替えたことに基づいて作成される(例えば、ユーザはドロップダウンメニューを選択する)。この例の場合、修正後の表示761は、先ず「年数」の列762を並べ替え、その「年数」の列に基づいてグループ化された状態で「ファーストネーム」の列764の中で行を並べ替えることで作成されている。修正後の表示761を作成するために、表示作成モジュール210はステート記録部206及び問い合わせエンジン208と通信し、「年数」の列の画像及びシンボリックデータに含まれているシンボリックデータに従って元の表示332を並べ替える。この例では「年数」の列が数値の昇順に並べられている。「年数」の列の中で同じシンボリックデータを含むセル(例えば、年数が3であるセル)については、表示作成モジュール210は、ステート記録部206及び問い合わせエンジン208と通信し、「ファーストネーム」の列の画像及びシンボリックデータに含まれているシンボリックデータに従って元の表示332を並べ替える。この例の場合、「ファーストネーム」の列が(順方向の)アルファベット順に並べられている。例えば、家又は部屋の居住年数が3年である人々のグループの中で、エリシャ(Elisha)、ジャズ(Jazz)及びジョン(John)の3行がアルファベット順に並んでいる。
図7Hはテーブルについての具体的な2つのコレクション表示770を示す。第1のユーザインタフェースは元の表示332を含み、第2のユーザインタフェースは修正された表示771を含む。修正後の表示771は元の表示332の列の幅をユーザが変更したことに基づいて作成される(例えば、ユーザは列の境界をドラッグする)。この例では、修正後の表示711は「郵便番号」の列の幅を増やすことで、例えば幅772を幅774に拡張することで、修正後の表示771が作成されている。
図8Aは表示を選択するダイアログボックス800の具体的な図形表現を示す。一実施形態において、ユーザインタフェースエンジン212は、コレクション表示と共にダイアログボックス800を表示するようにユーザインタフェースをユーザに提供する。例えば、ダイアログボックスは図3Cに示されるユーザインタフェースの右上隅に登場する。ダイアログボックス800は、ユーザにより現在可能でありアクセス可能なコレクション表示をリスト化又は列挙するドロップダウンリスト802を含む。ドロップダウンリスト802に列挙された表示をユーザが選択したことに応じて、ユーザインタフェースエンジン212はユーザに対してその表示を行う。現在の表示の名称はドロップダウンリスト802に示されている。この例の場合、現在の表示は「最近の来客」である。先ずコレクションがロードされると、現在の表示はデフォルトの表示になり、デフォルトの表示の名称がドロップダウンリスト802に示される。デフォルト表示は、元のコレクション表示又はユーザが指定した表示等とすることが可能である。例えば、列を隠すことで、列を並べ替えることで、或いは列の中の並び順を変えることで、ユーザが現在の表示の一部を修正する場合、ドロップダウンリスト802における名称は「新表示」に変更される。これは、現在の表示が修正されかつまだ保存されていないこおとをユーザに通知する。
図8Bはコレクション表示を保存するダイアログボックス820の具体的な図形表現を示す。一実施形態において、ユーザインタフェースエンジン212は、コレクション表示と共にダイアログボックス820を表示するようにユーザインタフェースをユーザに提供する。例えば、図8Aに示されているユーザインタフェースの右上隅で「+」ボタンをユーザが選択すると、現在の表示を保存するように「表示を保存」するためのダイアログボックスがユーザにポップアップ表示される。「表示を保存」というダイアログボックス820は、編集可能なコンボボックス822、保存ボタン及びキャンセルボタンを含む。一実施形態において、ユーザはコンボックス822に名称を入力し、その名称で表示を保存するために保存ボタンをクリックする。別の実施形態において、ユーザはコンボボックス822で提示されている名称のリストの中から名称を選択してもよい。名称のリストは保存している既存のコレクション表示の名称を含む。ユーザは既存の表示を上書きするためにその保存ボタンをクリックしてもよい。このようにしてユーザは保存された表示を修正できる。ユーザがキャンセルボタンを選択すると、ダイアログボックス820は片付けられ、如何なる変更もなされない。
図8Cは表示を削除するダイアログボックス850の具体的な図形表現を示す。一実施形態において、ユーザインタフェースエンジン212は、コレクション表示と共にダイアログボックス850を表示するようにユーザインタフェースをユーザに提供する。例えば、図8Aに示されているユーザインタフェースの右上隅で「-」ボタンをユーザが選択すると、現在の表示を削除するように「表示を削除」するためのダイアログボックスがユーザにポップアップ表示される。「表示を削除」というダイアログボックス850は、保存されているコレクション表示をリスト化するドロップダウンメニューと、削除ボタンと、キャンセルボタンとを含む。ユーザがリストの中から表示を選択し、削除ボタンを選択すると、現在示されている表示が削除される。ユーザがキャンセルボタンを選択すると、ダイアログボックス850は片付けられ、如何なる変更もなされない。
実施の形態に関する上記の記述は例示及び説明の観点からなされている。これは網羅的ではなく、説明された特定の形態に明細書を限定しようとするものでもない。上記の説明により多くの修正例及び変形例が可能である。実施の形態の範囲はこれら説明された例に限定されず、本願の特許請求の範囲によって規定されるように意図されている。当業者に理解されるように、開示される内容は、本願の精神及び本質的特徴から逸脱することなく、他の形態でも実施されてよい。同様に、モジュール、ルーチン、特徴、属性、方法及びその他の形態に関する具体的な名称や区分けは必須でも重要でもなく、本願及び本願の特徴を実施する手段は異なる名称、区分け及び/又はフォーマットを有してもよい。更に、当業者に明らかであるように、本明細書におけるモジュール、ルーチン、特徴、属性、手段及びその他の形態は、フォルトウェア、ハードウェア、ファームウェア又はそれら3つのうちの任意の組み合わせとして実現することが可能である。また、本明細書に関してコンポーネント(具体例は、モジュール)がソフトウェアで実施される場合、コンポーネントは、スタンドアローンプログラムとして、大規模なプログラムの一部分として、複数の個々のプログラムとして、静的又は動的にリンクしたライブラリとして、ロード可能なカーネルモジュールとして、装置ドライバとして実施することが可能であり、及び/又はコンピュータプログラミングの技術分野における当業者にとって現在知られている又は将来知られる他の全ての方法で実施されてもよい。更に、本明細書は特定の如何なるプログラミング言語で実施することにも限定されず、特定の如何なるオペレーティングシステムや環境で実施することにも限定されず。従って、開示される内容は例示的であって限定的ではなく、開示される内容は添付の特許請求の範囲によって規定される。