説明

シリアルバイナリ形式でドキュメントを格納するシステムおよび方法

【課題】ドキュメントデータが他のアプリケーションからアクセス可能なようにシリアル化されたバイナリ形式でドキュメントデータを格納するためのデータ構造を備えるコンピュータ可読媒体を提供すること。
【解決手段】ルートノードデータを含むドキュメント構造が生成される。ドキュメントは、シリアルバイナリデータ形式で格納される。シリアルバイナリ形式は、第1のデータフィールド内のドキュメント構造に関連付けられたサイズデータを格納することを含む。シリアルバイナリ形式は、さらに、第2のデータフィールドにドキュメント構造ディスクリプタデータを格納することも含み、ドキュメント構造ディスクリプタデータは、データ予想を示すための少なくとも1つのフラグを含む。シリアルバイナリ形式は、さらに、第3のデータフィールドにルートノードデータを格納することを含み、ルートノードデータは、フラグの少なくとも1つにより示される。

【発明の詳細な説明】
【技術分野】
【0001】
タブレットPCを使用することで、ユーザはふつう、画面に直接描画または書くことができる。この描画または手書きは、一般に「インキング」と呼ばれる。インキングは、一種のユーザ入力であり、タッチスクリーン、およびユーザが従来のペンと紙で書くのと同様にコンピューティングペン(computing pen)を使用し画面上に書くことを含むことができる。インキングは、さまざまなアプリケーションで使用される。例えば、インキングは、ドローイングアプリケーション、ペインティングアプリケーション、ワードプロセッシングアプリケーション、クレジットカード署名アプリケーションなどで使用することができる。
【背景技術】
【0002】
インキングは、ただ単なるペンストロークの視覚的表現を含むだけではなく、データ型をも含むことができる。データ構造は知られているが、情報を格納するために使用されるデータ構造のサイズはひどく大きくなり、扱いにくいものとなる可能性がある。また、プログラム間にドキュメント構造の互換性があれば、コンピュータの効率および一般的な使い勝手が向上する。しかし、互換性は、ユーザが一方のアプリケーションから他方のインクアプリケーションへインクデータを転送することを望んでいる場合に問題になりうる。
【発明の開示】
【発明が解決しようとする課題】
【0003】
一般に、本発明のいくつかの態様は、ドキュメント構造を生成し、シリアルバイナリ形式でそのドキュメント構造を格納するシステムおよび方法に関係する。本発明はまた、インクドキュメント構造を生成し、他のアプリケーションからアクセス可能なようにインクドキュメント構造を格納するシステムおよび方法にも関係する。本発明は、さらに、インキング全体の再解析を必要とすることなくインキングの一部を修正または変更するシステムおよび方法に関係する。
【課題を解決するための手段】
【0004】
本発明のいくつかの態様は、ドキュメントデータが他のアプリケーションからアクセス可能なようにシリアル化されたバイナリ形式でドキュメントデータを格納するためのデータ構造を備えるコンピュータ可読媒体に関係する。ルートノードデータを含むドキュメント構造が生成される。ドキュメントは、シリアルバイナリデータ形式で格納される。シリアルバイナリ形式は、第1のデータフィールド内のドキュメント構造に関連付けられたサイズデータを格納することを含む。シリアルバイナリ形式はまた、第2のデータフィールドにドキュメントディスクリプタデータを格納することを含み、ドキュメント構造ディスクリプタデータは、データ予想を示すための少なくとも1つのフラグを含む。シリアルバイナリ形式は、さらに、第3のデータフィールドにルートノードデータを格納することを含み、ルートノードデータは、フラグの少なくとも1つにより示される。
【0005】
本発明の他の態様は、2分木構造をシリアル化形式で格納するコンピュータ実装方法に関係する。コンピュータ実装方法は、第1のデータフィールド内にドキュメント構造のサイズデータを格納することを含む。このコンピュータ実装方法はまた、第2のデータフィールドにドキュメント構造ディスクリプタデータを格納することも含み、ドキュメント構造ディスクリプタデータは、データ予想を示すための少なくとも1つのフラグを含む。このコンピュータ実装方法は、さらに、第3のデータフィールドにルートノードデータを格納することを含み、ルートノードデータは、フラグの少なくとも1つにより示される。
【0006】
本発明のさらに他の態様は、コンピュータ実行可能命令が格納されているコンピュータ可読媒体に関係する。これらの命令は、インクドキュメント構造を生成することを含み、インクドキュメント構造は、少なくとも1つのルートノードを含む。これらの命令はまた、シリアルバイナリ形式でインクドキュメント構造を格納することも含む。シリアルバイナリ形式は、第1のデータフィールド内のインクドキュメント構造に関連付けられたサイズデータを格納することを含む。シリアルバイナリ形式はまた、第2のデータフィールドにインクドキュメントディスクリプタデータを格納することも含み、インクドキュメント構造ディスクリプタデータは、データ予想を示すための少なくとも1つのフラグを含む。シリアルバイナリ形式は、さらに、第3のデータフィールドにルートノードデータを格納することを含むことができ、ルートノードデータは、フラグの少なくとも1つにより示される。
【発明を実施するための最良の形態】
【0007】
本発明のいくつかの実施形態について、これ以降、本発明の一部をなし、実例として、本発明を実施する特定の例示的な実施形態を示す、添付の図面を参照しつつさらに詳しく説明する。しかし、本発明は、多くの異なる形態で具現化することができ、したがって、本明細書で述べたいくつかの実施形態に限定されるものと解説すべきではなく、むしろ、これらの実施形態は、本開示が網羅的で完全であり、本発明の範囲を完全に当業者に伝えるように実現される。とりわけ、本発明は、方法またはデバイスとして実現することができる。したがって、本発明は、全体としてハードウェア実施形態、全体としてソフトウェア実施形態、またはソフトウェアおよびハードウェアの態様を組み合わせた実施形態の形を取りうる。したがって、以下の詳細な説明は、限定的な意味で解釈すべきではない。
【0008】
シリアルバイナリ形式でデータを格納する方法およびシステムの例示的な実施形態
一般に、本発明は、インクドキュメント構造を生成し、他のアプリケーションからアクセス可能なようにインクドキュメント構造を格納するシステムおよび方法に関係する。より具体的には、本発明は、格納効率を高めるためデータをシリアルバイナリ形式で格納するシステムおよび方法に関係する。本発明はまた、インキング全体の再解析を必要とすることなくインクの一部を修正または変更するシステムおよび方法に関係する。本明細書で述べている説明ではインクドキュメントの格納およびロードを参照しているとしても、本明細書で参照されているシリアルバイナリ形式は、他の型のデータを格納するために使用することができる。例えば、本発明は、ワードプロセッシングアプリケーション、スプレッドシートアプリケーション、ドローイングアプリケーション、グラフィックスアプリケーション、ノーツアプリケーション、画像アプリケーションなどに関連するデータを含むことができる。簡潔に述べると、シリアルバイナリ形式は、2分木構造に関連付けられた任意の型のデータを格納するために使用することができる。
【0009】
1.インクアプリケーションの例示的な実施形態
本発明の一態様の一般的な文脈として、インクアプリケーションは、ユーザがペンを使用してデータを入力するときに視覚的フィードバックをリアルタイムで返すことができる。しかし、インキングは、ペンストロークの視覚化よりもさらに多くのものを含み、データ型を含むことができる。ユーザは、ペン、インク、インク解析、およびインク認識のさまざまなレベルの機能をサポートするデジタイザ用のアプリケーションを構築することができる。このようなアプリケーションは、単純なテキスト入力の認識から複雑なインクドキュメントの作成および編集に至るまでさまざまである。
【0010】
インクアプリケーションはまた、インク−テキスト間変換も含むことができる。状況によっては、直接的インク入力を受け付けないアプリケーションもある。このような状況では、インクアプリケーションは、手書き認識を実装し、インクをテキストに変換することにより、直接的インク入力を受け付けないアプリケーションにカット&ペーストすることができる。アプリケーションはまた、インクオブジェクトおよび他のドキュメントオブジェクトに関するその文脈も認識することができる。他の実施形態では、ユーザは、インクを操作し、インクを使用して、テキスト、グラフィックス、ベクトル形状、マルチメディアオブジェクトなどを含むリッチドキュメントをオーサリングすることができる。このような実施形態では、インクを、インクオブジェクトをリフローし重ねることができるデータ型として取り扱う。
【0011】
インク入力は、未処理(raw)インクデータの形態でアプリケーションに関連付けることができる。一実施形態では、未処理インクデータをインクアナライザに送り、未処理インクデータを処理し、未処理インクデータと別にすることができるインクドキュメント構造を生成することができる。インクアナライザは、未処理インクデータを管理可能な複数のストローク成分に分割するため解析および認識プロセスを実装することができる。以下でさらに詳しく説明するように、一実施形態では、インクアナライザは、木のそれぞれのノードが未処理インクデータの一部分との関係を定義する2分木を有するインクドキュメント構造を生成することができる。インクドキュメント構造を使用すると、プラットフォームに関連付けられたインクアプリケーションは、未処理インクデータとインクドキュメント構造を関係付けて、オリジナルのインクおよび関連付けられたインクドキュメント構造をロードすることができる。また、インクドキュメント構造を使用することで、ユーザは、インクドキュメント全体を再解析することなくインクをロードし修正することもできる。また、本発明では、1つのプラットフォーム上の複数のアプリケーション間でインクを共有することができる。
【0012】
図3は、インクドキュメントデータをシリアルバイナリ形式で格納するためのシステムの例示的な一態様の一般的な概要を表す。図に示されているように、システム300は、デジタイザ302、アプリケーション304、およびインクアナライザ306を含む。デジタイザ302は、図1に関して説明されているコンピューティングデバイスを含むことができる。デジタイザ302は、図2に関して説明されているモバイルコンピューティングデバイスも含むことができる。一実施形態では、デジタイザは、ワシントン州レドモンドの本件特許出願人のWINDOWS(登録商標)XP TABLET PC EDITION上で稼働するTABLET PCデジタイザを含む。しかし、デジタイザ302は、インクアプリケーションの動作をしやすくするデバイスを含むことができる。
【0013】
デジタイザ302は、ユーザ入力ストローク(例えば、手書きおよび/または描画ストローク)を2値化し、一実施形態では、データを未処理データ記憶装置(storage)308に格納する。未処理データ記憶装置308は、デジタイザ302からのデータを維持することができる種類の記憶装置である。未処理データ記憶装置308も、1つまたは複数のアプリケーションおよび/または1つまたは複数のプラットフォームに関連付けることができる。他の実施形態では、デジタイザ302は、未処理データ記憶装置308をバイパスし、2値化されたデータをアプリケーション304に送信する。
【0014】
アプリケーション304は、プラットフォームに関連付けられた任意のアプリケーションを含むことができる。一実施形態では、アプリケーション304は、インクを使いやすくするアプリケーションである。アプリケーション304は、ワードプロセッシングアプリケーション、ペイントアプリケーション、製図アプリケーション、ドローイングアプリケーション、クレジットカード署名アプリケーションなどを含むことができる。一実施形態では、アプリケーション304は、本件特許出願人のInkEdit、InkPicture、および/またはOneNoteを含む。他の実施形態では、アプリケーション304は、保存オペレーションおよびロードオペレーションを実行することができる。保存オペレーションは、インクデータおよび非インクデータを保存することを含むことができる。アプリケーション304は、未処理インクデータを未処理データ記憶装置308に保存し、アプリケーション304は、インクドキュメント構造をプラットフォームに関連付けられたインクアナライザに保存することができる。ロードオペレーションでは、アプリケーション304は、以下でさらに詳しく説明するようにインクドキュメント構造と未処理インクデータをロードし、統合することができる。
【0015】
インクアナライザ306は、アプリケーション304から未処理インクデータを受信するように構成することができる。インクドキュメント構造を生成するため、インクアナライザ306は未処理インクデータに対し構造解析を実行するように構成される。構造解析は、未処理データの解析および未処理データの認識を含むことができる。
【0016】
一実施形態では、構造解析を行うことで、テキスト認識、手書き、および描画分類、およびレイアウト解析を容易にすることができる。インクアナライザ306は、連携動作してテキスト認識機能を高める解析コンポーネントおよびレコグナイザコンポーネントを含むことができる。例えば、パーサー(parser)は、インクがレコグナイザに送られる前に前処理ステップとしてオペレーションを実行することができる。前処理では、パーサーは、マルチラインインク(multi−lined ink)を解析して「きれい(clean)に」し、それを一度に1パーセルずつレコグナイザに送ることができる。パーセルは、インクドキュメントの一部を含むことができる。パーサーは、さらに、不正な入力ストローク順序情報を是正して、入力順序にかかわらずすべてのストロークが確実に認識されるように構成することができる。また、パーサーは、隣接行に関する情報を生成することができる。例えば、2つの隣接行が1つの行頭文字で始まるという事実は、現在行が行頭文字で始まることを示す強い指標となりうる。
【0017】
他の実施形態では、インクアナライザ306の解析オペレーションはまた、インクを描画または手書きとして分類することを含むこともできる。手書きは、単語を認識しやすくするインクストロークを含むことができる。描画ストロークは、手書きストロークでないものを含むことができる。例えば、図4を参照すると、ストローク「H」は、手書きストロークを含み、「下線」は、描画ストロークを含むことができる。この方法では、一実施形態において、手書きストロークは、レコグナイザに送られる唯一のストロークとすることができる。
【0018】
インクアナライザ306のさらに他の実施形態では、レイアウト解析は、お互いおよび非インクデータに関する手書きおよび描画ストロークの細目(break down)を含む。インクアナライザ306がインキングのストロークを解析した後、これらのストロークの木表現(つまり、インクドキュメント構造)を生成することができる。簡潔にいうと、インクアナライザ306は、ドキュメントを2分木で格納し、シリアルバイナリ形式を介してその2分木を他のアプリケーションからアクセスできるようにすることが可能な任意の種類のアナライザを含むことができる。シリアルバイナリ形式がインクドキュメント構造を参照しつつ本明細書で説明されているとしても、シリアルバイナリ形式を使用して、ドキュメント木構造に関連付けられた任意の種類の情報を格納することができる。
【0019】
インクアナライザ306が未処理データに基づいてインクドキュメント構造を生成した後、インクドキュメント構造はアプリケーション304から利用することができるようになる。インクドキュメント構造は、ライブインクドキュメント構造を含むことができる。格納オペレーションが引き起こされる(instigated)と、アプリケーション側は、インクアナライザ306がインクドキュメント構造を格納することを要求する。インクアナライザ306がプラットフォームコンポーネントであるという点において、インクドキュメント構造は他のインクアプリケーションから利用可能である。例えば、ユーザがワードプロセッシングドキュメントでインクを生成する場合、このインクを、再度解析する必要なく、ドローイングアプリケーションにカット&ペーストすることができる。この実施例では、ドローイングアプリケーションは、インクドキュメント構造からオリジナルのインクを生成する方法を認識する。また、インクは、解析されシリアルバイナリ形式で保存されるため(後述)、インク全体の再解析を必要とすることなく、修正し、効率よく格納することができる。修正された部分は、インクドキュメント構造の単一のパーセル(parcel)に対応し、したがって、変更されたパーセルの再解析のみをすればよい。
【0020】
一般に、ロードオペレーションの際に、アプリケーション304は、未処理インクデータ、非インクデータ(non−ink data)、およびインクドキュメント構造をロードすることができる。未処理インクデータは、未処理データ記憶装置308からロードすることができる。非インクデータも、未処理データ記憶装置308からロードすることができる。しかし、非インクデータは、アプリケーション304に関連付けられた記憶装置からロードされると考えられる。インクドキュメント構造は、プラットフォームコンポーネントであってよい、インクアナライザ306からロードすることができる。一実施形態では、アプリケーション304は、再解析を行わなくてもインクがロードされるように未処理データおよびインクドキュメント構造を関連付ける。
【0021】
図4は、本発明の一態様による例示的なインキング400を表している。インキング400は、テキスト、図面、テーブル、チャートなどと関連付けることができるか、またはそれらとの関係を持つことができる。また、インキング400は、さまざまな種類の手書き、描画、形状、言語、記号、および歪みを含むこともできる。以下でさらに詳しく説明するが、インキング400は、インクドキュメント構造の複数のノードに相関する複数の入力を含むことができる。例えば、参照番号402は、手書き領域を示している。
【0022】
他の実施例として、参照番号404は、位置揃え(alignment)レベルを示している。図4に例示されているインキング400の最初と最後の行は、同じレベルにインデントされ、したがって、位置揃えレベル404を示している。インキング400の真ん中の行は、内側にインデントされ、したがって、他の位置揃えレベルを示している。
【0023】
さらに他の実施例では、参照番号406は、段落を示し、参照番号408は、1行を示す。インキング400はまた、単語410も含み、図には示されていないが、単語410はまた、ストロークも含むことができる。ストロークは、単語の一部を含むことができる。
【0024】
図5は、例示的なインクドキュメント構造500を表す。例示的なインクドキュメント構造500は、例示的なインキング400に関係する。インクドキュメント構造500は、インクドキュメント構造の一例にすぎない。データ構造の表現を実現しやすくする任意の種類の木構造を実装することができる。インクドキュメント構造500は、ルートノード501、手書き領域ノード502、位置揃えレベルノード504、段落ノード506、行ノード508、単語ノード510、および/またはストロークノード(図に示されていない)などの複数のノードを含む。インクドキュメント構造500はまた、描画ノード512、ヒントノード514、および1つまたは複数のリンクも含むことができる。
【0025】
図4において、線描画412は、「Mr.Bhattacharyay」という名前の下線である。線描画412は、図5では描画ノード512により表される。線描画412は単語「Mr.」および「Bhattacharyay」に関連付けられるという点において、描画ノード512および単語ノード510および511は、図5に示されているようなリンクを通じて関連付けられる。同様に、参照番号414は、ある種類のヒントを表す。一実施形態では、ヒント414はヒントボックスを含む。ヒント414は、入力が数、英字、記号、構造、コード、順序などであることを示す。例えば、図4では、ヒントは、入力が3桁以下の数であることを示唆するヒントを含むことができる。したがって、インクアナライザは、「5」を「S」と取り違えることがない。ヒント414は手書き「35」に関連付けられているという点において、ヒントノード514は、図5に示されているようにリンクを通じて単語ノード515に関連付けることができる。上述の実施例は、例示および説明のみを目的としている。
【0026】
この方法では、インキング400は、ノードを通じてインクドキュメント構造500として表すことができる。例えば、ストロークノード(図に示されていない)は、単語ノード510の子であってよい。単語ノード510は、行ノード508の子であってよく、行ノード508は、段落ノード506の子であってよい。同様に、段落ノード506は、位置揃えレベルノード504の子であってよく、位置揃えレベル点504は、手書き領域ノード502の子であってよい。この方法で、ルートノード501は、その子ノードのすべての情報含むことができる。一実施形態では、インキング全体400は、ルートノード501を参照して表すことができる。ドキュメント木構造内のドキュメントの表現がしやすくなる限り任意の個数のノードを任意の種類のドキュメントに関連付けることができる。
【0027】
2.インクドキュメントのシリアル化
図6は、シリアルバイナリ形式600でドキュメント構造を内部的に格納するための例示的な一実施形態を表す。インクドキュメント構造が本明細書で参照されているとしても、シリアルバイナリ形式600を使用して任意の種類の木ドキュメント構造を格納することができる。インクドキュメント構造が生成される場合、ドキュメント構造に関係する1つまたは複数の文字列が存在する。一実施形態では、圧縮は、これらの文字列のLempel−Ziv Welch形式(「LZW形式」)を含む。しかし、文字列は、文字列のサイズを縮小する圧縮形式により圧縮することができると考えられる。図6は、データの記憶装置604〜618の拡大図を含む(一部のデータは状況に応じて格納される)。一実施形態では、記憶装置は、記憶領域を節約するため符号なし整数を格納しやすくする多バイト符号化(「MBE」)値を含む。
【0028】
シリアルバイナリデータブロック602は、インクドキュメントのシリアル化されたバイナリデータを含み、データブロック604〜618により表される。データブロック604〜618は、シリアルバイナリデータブロック602全体の拡大図を表す。サイズデータ604は、シリアルバイナリデータブロック602に格納される第1の情報とすることができる。サイズデータ604は、インクドキュメント構造のサイズに関連付けられたデータを含む。
【0029】
インクドキュメントディスクリプタデータ606は、サイズデータ604に従うことができる。インクドキュメントディスクリプタデータ606は、シリアルバイナリデータブロック602に含まれるベータの型に関して予想を関連付ける任意の型のデータを含むことができる。この予想は、インクドキュメント構造で使用可能な関連付けられたデータを表すフラグの集合により示すことができる。これらのフラグは、シリアルバイナリデータブロック602内で使用可能なデータを示すことができる。データブロック604〜618は、インクドキュメント構造に関連付けることができるデータの少数の例にすぎない。本発明の一実施形態では、ルートノードデータ614(以下でさらに説明する)は、常に、インクドキュメントディスクリプタ606内のフラグに関連付けられる。
【0030】
ダーティ領域(Dirty region)データ608は、すべてのインクドキュメント構造に関連付けられるわけではないオプションデータである。ダーティ領域データ608は、保存前に完全には解析されていないインクドキュメント構造内のデータを指す。ダーティ領域データ608は、TextWord、Imageなどのインクデータと非インクデータの両方を指すことができる。ダーティ領域データ608は、インクドキュメントディスクリプタデータ606に関連付けられたフラグにより示すことができる。インクドキュメントディスクリプタデータ606がダーティ領域を示すフラグを含む場合、このフラグは、インクドキュメント構造が有限の、空でないダーティ領域を持つことを示す。ダーティ領域データ608が存在する場合、このデータは、ダーティ領域の再作成をしやすくするためバイナリ形式で格納される一連の矩形として表すことができる。インクドキュメントが完全に解析される状況では、ダーティ領域データ608は、存在しない場合があり、インクドキュメントディスクリプタ606内にフラグを必要としない。一実施形態では、ダーティ領域データ608(もし存在すれば)は、インクドキュメントディスクリプタ606の直後に来る。
【0031】
一実施形態では、ダーティ領域データ608は、領域データとしてシリアルバイナリデータブロック602に格納される。領域データ形式は、ダーティ領域データ608、非インク葉文脈ノードに対する位置データ、またはヒントノードに対する位置を格納するために使用することができる。領域データは、領域データのエリア全体を定義する個別の矩形の配列を含むことができる。ストリームから領域データオブジェクト(例えば、ダーティ領域データ608)を適切に再構築するために、領域データは矩形のカウントを含むことができる。すべての矩形について、領域データは、上データ、左データ、幅データ、および高さデータに関する情報を含むことができる。矩形データを記述する個々の値は、MBEまたは符号付き多バイト符号化(「SMBE」)を使用して格納することができる。永続的領域データの表現の一例は以下のとおりである。
【0032】
【表1】

矩形データは、以下のように表すことができる。
【0033】
【表2】

【0034】
グローバル一意識別子(「GUID」)テーブルデータ610は、すべてのインクドキュメント構造に関連付けられるわけではないオプションデータである。GUIDテーブルデータ610は、GUIDテーブルおよび/またはGUID値のリストに関連付けられているMBE GUIDの個数のカウントを含むことができる。GUID値のリストは、それぞれのGUIDに対する16バイト符号なしリテラル値(unsigned literal value)を含むことができる。インクドキュメント構造またはドキュメント木構造内の個々のノードは、GUIDにより識別される任意のデータを含むことができる。この任意のデータは、周知のデータ型および特定のアプリケーションに関連付けられているデータ型を含むことができる。特定のアプリケーションに関連付けられているデータ(つまり、カスタムプロパティデータ)では、データは特定のGUIDと突き合わせて格納される。GUIDテーブルデータ610は、演繹的に知られることのないインクドキュメント構造に関して使用されるGUIDの値を指定する。GUIDテーブルデータ610は、インクドキュメントレベルまたは文脈ノードレベルで任意のカスタムプロパティデータに対応し、その後、MBEを介して、GUIDテーブルデータ610に関するゼロを基点とするインデックスと呼ばれる。例えば、事前定義されていないGUIDは、アプリケーション特有の拡張ノード型およびノードに関するアプリケーション特有の拡張プロパティを含むことができる。GUIDテーブルデータ610がシリアルバイナリデータブロック602に関して存在している状況では、その存在は、ドキュメントディスクリプタデータ606に関係するフラグにより識別される。同様に、GUIDテーブルデータ610が存在しない場合、インクドキュメントディスクリプタデータ606内でフラグはセットされない。永続的GUIDテーブルデータの表現の一例は以下のとおりである。
【0035】
【表3】

【0036】
文字列テーブルデータ612は、すべてのインクドキュメント構造に関連付けられるわけではないオプションデータである。文字列テーブルデータ612は、文字列テーブル内のMBE文字列の個数のカウント、圧縮された文字列データのサイズ、および/または圧縮された文字列データを含むことができる。文字列テーブルデータ612は、解析ヒントサフィックスデータ、プレフィックステキストデータ、擬似事実データ、ヒント名データ、単語リストデータ、カスタムノードリンクデータ、および認識された文字列データに関連付けることができる。本発明の一態様に関して、文字列テーブルデータ612は、重複を含むことができる。インクドキュメント構造が特定の順序でロードされる限り、文字列テーブルデータ612へのインデックスを保持することで、文字列テーブルデータ612から適切な文字列データをロードすることができる。
【0037】
インデックスは、文字列が文字列テーブルデータ612に関連付けられるたび毎に書き込まれるわけではない。このような状況では、1インスタンス当たり少なくとも1バイトが節約される。さらに、文字列テーブルデータ612内の文字列はLZW圧縮とすることができる。LZW圧縮と組み合わせてすべての文字列についてインデックスを書かないことにより、文字列のサイズを実質的に縮小することができる。文字列テーブルデータ612がシリアルバイナリデータブロック602に関して存在している状況では、その存在は、インクドキュメントディスクリプタデータ606に関係するフラグにより識別される。同様に、文字列テーブルデータ612が存在しない場合、インクドキュメントディスクリプタデータ606内でフラグはセットされない。永続的文字列テーブルデータの表現の一例は以下のとおりである。
【0038】
【表4】

【0039】
ルートノードデータ614は、ルートノードのサイズに関係するデータおよび/またはルートノードに関連付けられたデータを含む。ルートノードデータ614は、図8に関して説明されているように格納することができる(以下でさらに詳しく説明する)。一態様では、ルートノードデータは、ルートノードデータ614が空であってもすべてのインクドキュメント構造と関連する必須データである。インクドキュメントディスクリプタデータ606に関連付けられたフラグは、ルートノードデータ614の存在を示すことができる。
【0040】
リンクデータ616は、すべてのインクドキュメント構造に関連付けられるわけではないオプションデータである。リンクデータ616は、インクドキュメント構造のノードが同じインクドキュメント構造内の他のノードにリンクされているかどうかを示すデータを含む。リンクデータ616は、インクドキュメント構造に関連して大域的に保持されるようにできる。リンクデータ616を格納するときに、リンクデータ616は、インクドキュメント構造に関連付けられたリンクの個数のカウントを含むことができる。個別のリンクデータ616はまた、データのMBEサイズも含むことができる。一態様では、MBEサイズデータの後にリンクディスクリプタが続き、これにより、リンクの型およびリンク元情報(origin information)を識別する。他の態様では、リンクディスクリプタデータの後に、リンク元ノード(source node)インデックスのSMBE値とリンク先ノード(destination node)インデックスのSMBE値が続く。リンク元ノードインデックスおよびリンク先ノードインデックスにより、リンク元ノードおよびリンク先ノードをそれぞれ識別する。さらに他の態様では、リンクデータ616がカスタムリンクを含むことをリンクディスクリプタデータが示している場合、グローバル文字列テーブル内のインデックスにより示されたグローバル文字列テーブルからカスタムリンクデータが読み込まれる。リンクデータ616がシリアルバイナリデータブロック602に関して存在している状況では、その存在は、インクドキュメントディスクリプタデータ606に関係するフラグにより識別される。同様に、リンクデータ616が存在しない場合、インクドキュメントディスクリプタデータ606内でフラグはセットされない。永続的リンクデータの表現の一例は以下のとおりである。
【0041】
【表5】

【0042】
カスタムプロパティデータ618は、すべてのインクドキュメント構造に関連付けられるわけではないオプションデータである。カスタムプロパティデータ618は、インクドキュメント構造に関連付けることができ、一態様では、ノードに関連付けられたカスタムプロパティデータとして格納される。カスタムプロパティデータは、アプリケーションがノードと関連付ける任意のデータを含むことができる。カスタムプロパティデータはGUIDにより識別され、既知または未知のGUIDを含むことができる。GUIDが未知の状況では、GUIDはGUIDテーブルデータ610として格納することができる。カスタムプロパティデータ618を格納する際に、フラグによりカスタムプロパティデータ618を既知の値として識別することができる。他の態様では、カスタムプロパティデータ618の格納は、GUIDテーブルデータ610へのインデックスを含む。カスタムプロパティデータ618の記憶装置はまた、データのサイズのMBE値およびそのデータを表すバイトの配列を含むこともできる。カスタムプロパティデータ618がシリアルバイナリデータブロック602に関して存在している状況では、その存在は、インクドキュメントディスクリプタデータ606に関係するフラグにより識別される。同様に、カスタムプロパティデータ620が存在しない場合、インクドキュメントディスクリプタデータ606内でフラグはセットされない。永続的インクドキュメント構造の表現の一例は以下のとおりである。
【0043】
【表6】

【0044】
図7は、文脈ノードデータ700を内部に格納するための例示的な一実施形態を表している。一実施形態では、ルートノードデータ614は、文脈ノードであり、文脈ノードデータ700として格納される。文脈ノードデータ700は、インクドキュメントのシリアル化されたバイナリデータに含まれることができ、データブロック704〜716により表される。データブロック704〜716は、文脈ノードデータ702の拡大図を表す。
【0045】
ノードディスクリプタデータ704は、インクドキュメント構造のそれぞれのノードに関連付けられているデータを含むことができる。ノードディスクリプタデータ704は、ノードデータの構成とともにインクドキュメント構造に関連付けられたノードの種類をも定義するフラグの集合体により示すことができる。
【0046】
ノードサイズデータ706は、特定のノード上に格納される可能な既知のプロパティを含むことができる(例えば、格子データ、境界ボックスデータ、および/またはピンニングフラグデータ)。ノードサイズデータ706はまた、位置データ、子下位ノードデータ、およびストロークデータとともに未知のプロパティ(拡張/カスタムプロパティ)を含むこともできる。一態様では、ノードサイズデータ706は、ノードディスクリプタデータ704の直後に置くことができる。簡潔に述べると、ノードディスクリプタデータ704は、文脈ノード木全体のサイズを示すことができる。
【0047】
ノード位置データ708は、すべてのノード型に関連付けられるわけではないオプションデータである。ノード位置データ708が存在している状況では、その存在は、ノードディスクリプタデータ704に関係するフラグにより識別される。同様に、ノード位置データ708が存在しない場合、ノードディスクリプタデータ704内でフラグはセットされない。一態様では、ノードディスクリプタデータ704が非インク葉ノードを示している場合、ノード位置データ708が続くことができる。非インク葉ノードは、子ノードを持たない、またストロークデータを含まないノードを含むことができる。例えば、非インク葉ノードは、イメージノード、テキストノード、またはヒントノードを含むことができる。一実施形態では、ノード位置データ708は領域データとして格納される。領域データは、領域データのエリア全体を定義する個別の矩形の配列を含むことができる。ストリームから領域データオブジェクト(例えば、ノード位置データ708)を適切に再構築するために、領域データは矩形のカウントを含むことができる。すべての矩形について、領域データは、上データ、左データ、幅データ、および高さデータに関する情報を含むことができる。矩形データを記述するこれら個々の値は、MBEまたはSMBEを使用して格納することができる。永続的領域データの表現の一例は以下のとおりである。
【0048】
【表7】

【0049】
ストロークデータ710は、すべてのノード型に関連付けられるわけではないオプションデータである。ストロークデータ710は、ストロークデータを含む任意のノードに関連付けられたデータを含むことができる。例えば、ストロークデータ710は、非分類インクノード、単語ノード、または描画ノードに関連付けることができる。ストロークデータ710が存在している状況では、その存在は、ノードディスクリプタデータ704に関係するフラグにより識別することができる。同様に、ストロークデータ710が存在しない場合、ノードディスクリプタデータ704内でフラグはセットされない。
【0050】
ストロークデータ710が存在する場合、記憶装置には、ノードに関連付けられたストロークの数のMBE値を入れることができる。一態様では、それぞれのストロークは、ストロークディスクリプタフラグの集合体を含む1バイトのストロークディスクリプタに関連付けられる。これらのフラグは、MBEストローク識別データを示すストローク識別を示すことができる。一態様では、ストローク識別フラグがセットされていない場合、ストローク識別は、取り出された最後のストローク識別を含むことができる。これらのフラグはまた、手書きに関連付けられているストロークの型を識別する手書きストロークディスクリプタフラグも含むことができる。他の態様では、これらのフラグは、描画に関連付けられているストロークの型を識別する描画ストロークディスクリプタフラグを含むことができる。これらのフラグはまた、ハイライトに関連付けられているストロークの型を識別するハイライターディスクリプタフラグも含むことができる。さらに他の実施形態では、これらのフラグは、ストロークの有効な確認済みの祖先を識別する確認済み祖先ディスクリプタフラグを含むことができる。確認済み祖先シリアル化インデックスのMBE値をストリーム内に格納することができる。さらに他の実施形態では、これらのフラグは、ストロークに関連付けられた言語を識別するストローク言語の識別フラグを含むことができる。言語に対応する符号付き符号化値(signed encoded value)は、ストリーム内に格納できる。さらに他の実施形態では、フラグに関連付けられた値は、ストロークディスクリプタデータに応じて上述の順序で格納される。ストロークの識別を容易にする任意の型のフラグをセットできることもさらに考えられる。
【0051】
子ノードデータ712は、すべてのノード型に関連付けられるわけではないオプションデータである。子ノードデータ712が存在している状況では、その存在は、ノードディスクリプタデータ704に関係するフラグにより識別することができる。同様に、子ノードデータ712が存在しない場合、ノードディスクリプタデータ704内でフラグはセットされない。子ノードデータ712は、コンテナ型ノードを含むことができる(つまり、段落ノード、行ノード、位置揃えノード、手書き領域ノード、および/またはルートノードなど)。コンテナノードは、子ノードを含む任意のノード型を含むことができる。子ノードデータ712の記憶装置は、子ノードの個数およびそれぞれの子ノードからのデータを格納することを含む。それぞれの子からのデータは、文脈ノードデータ702と同じようにして格納される。
【0052】
ノード既知プロパティデータ714は、すべてのノード型に関連付けられるわけではないオプションデータである。ノード既知プロパティデータ714が存在している状況では、その存在は、ノードディスクリプタデータ704に関係するフラグにより識別することができる。同様に、ノード既知プロパティデータ714が存在しない場合、ノードディスクリプタデータ704内でフラグはセットされない。
【0053】
ノード既知プロパティデータ714は、データ型および形式が知られており、データサイズを縮小するために最適化を容易にするプロパティを含む。ノード既知プロパティデータ714は、回転された境界ボックスデータ(8個の整数の配列)、認識格子データ(可変長を含むバイトの配列)、注釈データ確認データ(整数型)、および/またはヒントデータ(ヒントノード用)を含むことができる。一実施形態では、このデータは、データのバイナリ表現を最適化するために定義済みの方法により格納される。例えば、整数の配列は、符号付き符号化形式で保存することができる。また、構造体またはクラスデータなどの複合データ型は、効率よくデータを定義するバイナリ形式で格納することができる。永続的既知プロパティデータの表現の一例は以下のとおりである。
【0054】
【表8】

【0055】
ノードカスタムプロパティデータ716は、すべてのノード型に関連付けられるわけではないオプションデータである。ノードカスタムプロパティデータ716が存在している状況では、その存在は、ノードディスクリプタデータ704に関係するフラグにより識別することができる。同様に、ノードカスタムプロパティデータ716が存在しない場合、ノードディスクリプタデータ704内でフラグはセットされない。ノードカスタムプロパティデータは、アプリケーションがノードと関連付ける任意のデータを含むことができる。ノードカスタムプロパティデータ716はGUIDにより識別され、既知または未知のGUIDを含むことができる。GUIDが未知の状況では、GUIDはGUIDテーブルデータ610として格納することができる。ノードカスタムプロパティデータ716を格納する際に、フラグによりノードカスタムプロパティデータ716を既知の値として識別することができる。他の態様では、ノードカスタムプロパティデータ716を格納することは、GUIDテーブルデータ610へのインデックスを含む。ノードカスタムプロパティデータ716の記憶装置はまた、データのサイズのMBE値およびそのデータを表すバイトの配列を含むこともできる。永続的文脈ノードデータの表現の一例は以下のとおりである。
【0056】
【表9】

【0057】
それぞれのストロークデータブロブ(blob)は、以下のようにストリームで表される。
【0058】
【表10】

【0059】
3.シリアル化形式でドキュメント格納するための例示的なプロセス
図8は、インクドキュメントデータをシリアル化バイナリ形式で格納するためのシステムの一般的な実施形態を表している。システム800は、開始ブロック802から始まり、インクドキュメントが生成されるブロック804へ流れる。ブロック804は、ユーザからのストローク入力を2値化するデジタイザを備えることができる。デジタイザは、コンピューティングデバイス(例えば、図1)、モバイルコンピューティングデバイス(例えば、図2)、本件特許出願人のWINDOWS(登録商標) XP TABLET EDITION上で稼働するTABLET PC、またはインクアプリケーションのオペレーションを容易にする任意のデバイスを含むことができる。さらに、本明細書の説明でインクドキュメントを参照しているとしても、システム800は、任意の型のデータに関して実装することができる。例えば、本発明は、ワードプロセッシングアプリケーション、スプレッドシートアプリケーション、ドローイングアプリケーション、グラフィックスアプリケーション、ノーツアプリケーション、画像アプリケーションなどに関連して使用することもできる。一実施形態では、アプリケーションは、本件特許出願人のInkEdit、InkPicture、および/またはOneNoteを含む。ブロック804から、プロセス800はブロック806に流れる。
【0060】
ブロック806は、未処理インクデータを生成するステップを示す。一実施形態では、未処理インクデータを生成することは、デジタイザでストローク入力を未処理インクデータに変換し、未処理インクデータを未処理データ記憶装置に格納することを含む。他の実施形態では、未処理インクデータを生成することは、デジタイザでストローク入力を未処理インクデータに変換し、未処理インクデータをアプリケーションに送信することを含む。次いでプロセス800は、ブロック808に流れる。
【0061】
ブロック808は、インクドキュメント構造を生成するステップを示す。ブロック808は、アプリケーションから未処理インクデータを受信するインクアナライザを含むことができる。インクアナライザは、図3に関して上で詳しく説明されているように解析および認識オペレーション用に構成することができる。ブロック808は、さらに、図4および5に従って上述のようにインクドキュメント構造を生成することを含むことができる。他の実施形態では、インクドキュメント構造は、インキングに相関する複数のノードを含む。例えば、インクドキュメント構造は、手書き領域ノード、位置揃えノード、段落ノード、行ノード、単語ノード、またはストロークノードを含むことができる。インクドキュメント構造は、さらに、描画ノードおよび/またはヒントノードを含むこともできる。インクドキュメント構造は、インキングの2分木表現を実現しやすくする任意の型のノードを含むことができることが考えられる。他の実施形態では、これらのノードは、関係するノードと相関するリンクに関連付けることができる。
【0062】
ブロック810に流れるときに、インクドキュメント構造は、大域的にアクセス可能なように格納できる。一実施形態では、インクドキュメント構造は、圧縮され、図6および7に関して上で説明されているように格納される。このような場合、インキングは、アプリケーションと連携して生成することができ、その後、他のアプリケーションからアクセス可能なように格納することができる。言い方を変えると、プラットフォームに関連付けられている他のアプリケーションは、インクドキュメント構造および未処理インクを使用して解析されたインクを再生成することができる。このようにアクセス可能であるため、アプリケーション間でカット&ペーストのオペレーションを容易に実行できる。また、インクは、インクが解析され、認識され、シリアル化形式で保存されている限り、インクドキュメント全体の再解析を行わなくても修正することができる。
【0063】
4.例示の動作環境
図1を参照すると、本発明を実装する例示的なシステムは、コンピューティングデバイス100などのコンピューティングデバイスを含む。基本的な構成では、コンピューティングデバイス100は、少なくとも1つの処理ユニット102およびシステムメモリ104を備えるのがふつうである。コンピューティングデバイスの正確な構成と種類に応じて、システムメモリ104は揮発性(RAMなど)、不揮発性(ROM、フラッシュメモリなど)、またはこれら2つの何らかの組み合わせとすることができる。システムメモリ104は、通常、オペレーティングシステム105、1つまたは複数のアプリケーション106を含み、またプログラムデータ107を含むこともある。一実施形態では、アプリケーション106は、さらに、インキングオペレーション用のアプリケーション120を含む。基本構成は、図1において点線108内のコンポーネントにより示されている。
【0064】
コンピューティングデバイス100は、さらに特徴または機能を追加することもできる。例えば、コンピューティングデバイス100は、磁気ディスク、光ディスク、またはテープなどの追加データ記憶装置デバイス(取り外し可能および/または取り外し不可能)を備えることもできる。このような追加記憶装置は、図1では、取り外し可能記憶装置109および取り外し不可能記憶装置110により例示されている。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造体、プログラムモジュール、またはその他のデータなどの情報を格納する方法または技術で実装される揮発性および不揮発性、取り外し可能および取り外し不可能媒体を含むことができる。システムメモリ104、取り外し可能記憶装置109、および取り外し不可能記憶装置110は、すべてコンピュータ記憶媒体の例である。コンピュータ記憶媒体としては、限定はしないが、RAM、ROM、EEPROM、フラッシュメモリまたはその他のメモリ技術、CD−ROM、デジタル多目的ディスク(DVD)またはその他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置またはその他の磁気記憶デバイス、または所望の情報を格納するために使用することができコンピューティングデバイス100によりアクセスできるその他の媒体がある。このような任意のコンピュータ記憶媒体を装置100の一部とすることができる。さらにコンピューティングデバイス100は、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイスなどの(複数の)入力デバイス112を有することもできる。ディスプレイ、スピーカ、プリンタなどの(複数の)出力デバイス114を備えることもできる。これらの装置はすべて、当業に周知であるため、本明細書でさらに詳しい説明をする必要はない。
【0065】
また、コンピューティング装置100は、デバイスがネットワークまたはワイヤレスメッシュネットワークなどを経由して他のコンピューティングデバイス118と通信するために使用する通信接続(群)116も含むことができる。通信接続(群)116は、通信媒体の一実施例である。通信媒体は、通常、コンピュータ可読命令、データ構造体、プログラムモジュール、または搬送波もしくはその他のトランスポートメカニズムなどの被変調データ信号によるその他のデータを具現するものであり、任意の情報配信媒体を含む。「被変調データ信号」という用語は、信号内に情報を符号化するような方法で特性のうちの1つまたは複数が設定または変更された信号を意味する。例えば、限定はしないが、通信媒体としては、有線ネットワークまたは直接配線接続などの有線媒体、および、音響、RF、赤外線、およびその他の無線媒体などの無線媒体がある。本明細書で使用されているコンピュータ可読媒体という用語は、記憶媒体と通信媒体の両方を含む。
【0066】
図2は、本発明の例示的な一実施形態で使用できるモバイルコンピューティングデバイスを示している。図2を参照すると、本発明を実装する例示的なシステムは、モバイルコンピューティングデバイス200などのモバイルコンピューティングデバイスを含む。モバイルコンピューティングデバイス200は、プロセッサ260、メモリ262、ディスプレイ228、およびキーパッド232を備える。メモリ262は、一般に、揮発性メモリ(例えば、RAM)と不揮発性メモリ(例えば、ROM、フラッシュメモリなど)の両方を含む。モバイルコンピューティングデバイス200は、メモリ262内に常駐し、プロセッサ260上で実行される、オペレーティングシステム264を格納する。キーパッド232は、プッシュボタン式数値ダイヤリングパッド(典型的な電話機などの)、またはマルチキーキーボード(従来のキーボードなど)としてよい。ディスプレイ228は、液晶ディスプレイ、またはモバイルコンピューティングデバイスで一般的に使用される他の種類のディスプレイとすることができる。ディスプレイ228は、タッチセンシティブとすることができ、その場合、入力デバイスとしても機能する。
【0067】
1つまたは複数のアプリケーションプログラム266がメモリ262内にロードされ、オペレーティングシステム264上で実行される。アプリケーションプログラムのいくつかの実施例としては、電話ダイヤラープログラム、電子メールプログラム、スケジューリングプログラム、PIM(個人情報管理)プログラム、ワードプロセッシングプログラム、スプレッドシートプログラム、インターネットブラウザプログラムなどがある。モバイルコンピューティングデバイス200はまた、メモリ262内に不揮発性記憶装置268を含む。不揮発性記憶装置268は、モバイルコンピューティングデバイス200の電源が切れた場合に失われてはならない永続的情報を格納するために使用することができる。アプリケーション266では、電子メールまたは電子メールアプリケーションにより使用されるその他のメッセージ、PIMで使用する連絡先情報、スケジューリングプログラムにより使用されるアポイントメント情報、ワードプロセッシングアプリケーションにより使用されるドキュメントなどの情報を使用し、記憶装置268内に格納することができる。一実施形態では、アプリケーション266は、さらに、インキングオペレーション用のアプリケーション280を含む。
【0068】
モバイルコンピューティングデバイス200は、1つまたは複数の電池として実装することができる電源270を備える。電源270は、さらに、ACアダプタまたは電池を補助または充電する電力供給用ドッキングクレードルなどの外部電源を備えることも可能である。
【0069】
モバイルコンピューティングデバイス200は、2種類の外部通知メカニズム、LED 240とオーディオインターフェイス274とともに示されている。これらのデバイスは、作動させたときに、プロセッサ260およびその他のコンポーネントが節電のためシャットダウンする可能性があっても通知メカニズムにより指示される継続期間の間オンのままになるように電源270に直接結合することができる。LED 240は、ユーザがデバイスの電源投入ステータスを示す処置を講じるまでいつまでもオンのままになるようにプログラムすることができる。オーディオインターフェイス274は、可聴信号を供給し、ユーザから可聴信号を受信するために使用される。例えば、オーディオインターフェイス274をスピーカに結合することで可聴出力を供給し、マイクに結合することで、電話での会話を容易にするためなど、可聴入力を受け取ることができる。
【0070】
モバイルコンピューティングデバイス200はまた、無線周波通信など通信を送受信する機能を実行する無線インターフェイス層272も含む。無線インターフェイス層272を使用すると、通信事業者またはサービスプロバイダを介して、モバイルコンピューティングデバイス200と外部世界との無線接続性を容易に実現できる。無線インターフェイス相272との間の送信は、オペレーティングシステム264の制御の下で実行される。つまり、無線インターフェイス層272により受信される通信は、オペレーティングシステム264を介してアプリケーションプログラム266に、またその逆に広めることができる。
【0071】
上記の詳説、実施例、およびデータは、本発明の構成の製造および使用に関する完全な説明となっている。本発明の多くの実施形態は、本発明の精神と範囲を逸脱することなく実装できるため、本発明は付属の請求項によって定められる。
【図面の簡単な説明】
【0072】
【図1】本発明の一態様で使用できる例示的なコンピューティングデバイスを示す図である。
【図2】本発明の一態様で使用できる例示的なモバイルデバイスを示す図である。
【図3】インクドキュメントデータをシリアルバイナリ形式で格納するためのシステムの例示的な一態様を示す図である。
【図4】本発明の一態様による例示的なインキングを示す図である。
【図5】図4に表されているインキングの一部を表す例示的なインクドキュメント構造を示す図である。
【図6】本発明のいくつかの態様によるシリアルバイナリデータブロックを格納するためのデータ構造を示す図である。
【図7】本発明のいくつかの態様による文脈ノードデータを格納するためのデータ構造を示す図である。
【図8】インクドキュメント構造をシリアルバイナリ形式で格納するための一般的な態様を示す流れ図である。
【符号の説明】
【0073】
100 コンピューティングデバイス
104 システムメモリ
105 オペレーティングシステム
106 アプリケーション
120 インク
107 プログラムデータ
102 演算処理装置
109 取り外し可能記憶装置
110 固定記憶装置
112 入力デバイス(群)
114 出力デバイス(群)
116 通信接続(群)
118 他のコンピューティングデバイス
228 ディスプレイ
230 周辺デバイスポート
232 キーパッド
240 LED
260 プロセッサ
262 メモリ
264 OS
266 アプリケーション(群)
268 記憶装置
270 電源
272 無線インターフェイス層
274 オーディオインターフェイス
280 インク
302 デジタイザ
304 アプリケーション
306 インクアナライザ
308 未処理データ記憶装置
501 ルート
502 手書き領域
512 描画
504 位置揃えレベル
506 段落
508 行
510 単語
514 ヒント
515 単語
602 シリアルバイナリデータブロック
604 サイズデータ(インクドキュメント全体のサイズ)
606 インクドキュメントディスクリプタデータ
608 ダーティ領域データ(オプション)
610 GUIDテーブルデータ(オプション)
612 文字列テーブルデータ(オプション)
614 ルートノードデータ
616 リンクデータ(オプション)
618 カスタムプロパティデータ(オプション)
702 文脈ノードデータ
704 ノードディスクリプタデータ
706 ノードサイズデータ
708 ノード位置データ(オプション)
710 ストロークデータ(オプション)
712 子ノードデータ(オプション)
714 ノード既知プロパティデータ(オプション)
716 ノードカスタムプロパティデータ(オプション)

【特許請求の範囲】
【請求項1】
2分木構造をシリアル化データ形式で格納するためのデータ構造が格納されるコンピュータ可読媒体であって、
ドキュメント構造に関連付けられているサイズデータを格納するための第1のデータフィールドと、
ドキュメントディスクリプタデータを格納する第2のデータフィールドであって、前記ドキュメントディスクリプタデータは、前記ドキュメント構造の関連付けられたデータを示す1つまたは複数のフラグを含む第2のデータフィールドと、
ルートノードデータを格納する第3のデータフィールドであって、前記ルートノードデータは、前記フラグの少なくとも1つにより示される第3のデータフィールドとを備えることを特徴とするコンピュータ可読媒体。
【請求項2】
ダーティ領域データを格納する第4のデータフィールドをさらに備え、シリアル化されたデータ内の前記ダーティ領域データの存在は前記ドキュメントディスクリプタデータに関連付けられた前記フラグのうちの1つにより示されることを特徴とする請求項1に記載のコンピュータ可読媒体。
【請求項3】
前記ダーティ領域データは、インクアナライザにより解析されていないインクデータの位置データおよびインクアナライザにより解析されていない非インクデータの位置データのうちの少なくとも1つを含むことを特徴とする請求項2に記載のコンピュータ可読媒体。
【請求項4】
前記ダーティ領域データは、前記ダーティ領域データに関連付けられた矩形のカウント、上データ、左データ、幅データ、および高さデータのうちの少なくとも1つを含むことを特徴とする請求項2に記載のコンピュータ可読媒体。
【請求項5】
グローバル一意識別子データを格納する第4のデータフィールドをさらに備え、シリアル化されたデータ内の前記グローバル一意識別子データの存在が前記ドキュメントディスクリプタデータに関連付けられた前記フラグのうちの1つにより示されることを特徴とする請求項1に記載のコンピュータ可読媒体。
【請求項6】
前記グローバル一意識別子データは、アプリケーション特有のノード型およびアプリケーション特有の拡張プロパティのうちの少なくとも1つを含むことを特徴とする請求項5に記載のコンピュータ可読媒体。
【請求項7】
文字列テーブルデータを格納する第4のデータフィールドをさらに備え、シリアル化されたデータ内の前記文字列テーブルデータの存在が前記ドキュメントディスクリプタデータに関連付けられた前記フラグのうちの1つにより示されることを特徴とする請求項1に記載のコンピュータ可読媒体。
【請求項8】
前記文字列テーブルデータは、解析ヒントサフィックスデータ、プレフィックステキストデータ、擬似事実データ、ヒントノードデータ、単語リストデータ、カスタムリンクノードデータ、および認識された文字列データのうちの少なくとも1つに関連付けられることを特徴とする請求項7に記載のコンピュータ可読媒体。
【請求項9】
リンクデータを格納する第4のデータフィールドをさらに備え、シリアル化されたデータ内の前記リンクデータの存在は前記ドキュメントディスクリプタデータに関連付けられた前記フラグのうちの1つにより示されることを特徴とする請求項1に記載のコンピュータ可読媒体。
【請求項10】
前記リンクデータは、前記ドキュメント構造に関連付けられたリンクのカウント、リンクデータサイズ、リンクディスクリプタ、リンク元ノードインデックスデータ、およびリンク先ノードインデックスデータのうちの少なくとも1つを含むことを特徴とする請求項9に記載のコンピュータ可読媒体。
【請求項11】
カスタムプロパティデータを格納する第4のデータフィールドをさらに備え、シリアル化されたデータ内の前記カスタムプロパティデータの存在は前記ドキュメントディスクリプタデータに関連付けられた前記フラグのうちの1つにより示されることを特徴とする請求項1に記載のコンピュータ可読媒体。
【請求項12】
前記カスタムプロパティデータは、サイズデータ、および前記カスタムプロパティデータを表すバイトの配列のうちの少なくとも1つを含むことを特徴とする請求項11に記載のコンピュータ可読媒体。
【請求項13】
前記ルートノードデータは、ディスクリプタデータを含み、前記シリアル化されたデータ内の前記ノードディスクリプタデータの前記存在は、前記ルートノードデータに関連付けられたデータを示す1つまたは複数のフラグを含むことを特徴とする請求項1に記載のコンピュータ可読媒体。
【請求項14】
前記ルートノードデータは、前記ルートノードデータのサイズを示すサイズデータを示すことを特徴とする請求項13に記載のコンピュータ可読媒体。
【請求項15】
前記ルートノードデータは、ノード位置データ、ストロークデータ、子ノードデータ、ノード既知プロパティデータ、およびノードカスタムプロパティデータのうちの少なくとも1つを含むことを特徴とする請求項13に記載のコンピュータ可読媒体。
【請求項16】
2分木構造をシリアル化データ形式で格納するコンピュータ実装方法であって、
ドキュメント構造サイズデータを第1のデータフィールドに格納すること、
データ予想を示すための少なくとも1つのフラグを含む、ドキュメント構造ディスクリプタデータを第2のデータフィールドに格納すること、および
前記フラグの少なくとも1つにより示されるルートノードデータを第3のデータフィールドに格納することを備えることを特徴とするコンピュータ実装方法。
【請求項17】
第4のデータフィールドに、ダーティ領域データ、グローバル一意識別子テーブルデータ、文字列テーブルデータ、リンクデータ、およびカスタムプロパティデータのうちの少なくとも1つを格納することをさらに備えることを特徴とする請求項16に記載のコンピュータ実装方法。
【請求項18】
ルートノードデータは、予想データ、サイズデータ、ノード位置データ、ストロークデータ、子ノードデータ、ノード既知プロパティデータ、およびノードカスタムプロパティデータのうちの少なくとも1つを含むことを特徴とする請求項16に記載のコンピュータ実装方法。
【請求項19】
コンピュータ実行可能命令を格納するコンピュータ可読媒体であって、前記命令は、
少なくとも1つのルートノードを含むインクドキュメント構造を生成すること、
前記インクドキュメント構造をシリアルバイナリデータ形式で格納することであって、前記シリアルバイナリ形式の格納は、
前記インクドキュメント構造に関連付けられたサイズデータを第1のデータフィールドに格納すること、
データ予想を示すため少なくとも1つのフラグを含むインクドキュメント構造ディスクリプタデータを第2のデータフィールドに格納すること、および
前記フラグの少なくとも1つにより示されるルートノードデータを第3のデータフィールドに格納することを含む、シリアルバイナリデータ形式で格納することを備えることを特徴とするコンピュータ可読媒体。
【請求項20】
ルートノードデータは、予想データ、サイズデータ、ノード位置データ、ストロークデータ、子ノードデータ、ノード既知プロパティデータ、およびノードカスタムプロパティデータのうちの少なくとも1つを含むことを特徴とする請求項19に記載のコンピュータ実行可能命令。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2006−202297(P2006−202297A)
【公開日】平成18年8月3日(2006.8.3)
【国際特許分類】
【出願番号】特願2006−14029(P2006−14029)
【出願日】平成18年1月23日(2006.1.23)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】