專利名稱:電子墨水處理的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及電子墨水處理。本發(fā)明的各個方面尤其是應(yīng)用于電子墨水的分析,包括電子墨水的布局分析、分類和識別。本發(fā)明的附加方面涉及使用經(jīng)布局分析、分類和識別的電子墨水,例如用于提供電子墨水文檔內(nèi)豐富和靈活的注解。
背景技術(shù):
隨著計算機在社會中扮演的角色越來越擴展,開發(fā)了多種技術(shù)以將數(shù)據(jù)輸入計算機。一種特別有用的提交數(shù)據(jù)的技術(shù)是通過手寫。通過用記錄筆或另一對象寫入數(shù)字化儀以生成“電子墨水”,計算機用戶可以避免與鍵盤輸入相關(guān)的量和不便。手寫輸入很方便地用于以下方面,例如醫(yī)生巡視、建筑師在工地上時、郵遞員發(fā)送包裹、倉庫工人在倉庫巡視以及任何不方便使用鍵盤的情況下。雖然手寫輸入在許多情況下比鍵盤輸入很方便,但用電子墨水書寫的文字一般不能直接為大多數(shù)軟件應(yīng)用程序操控。因此,用電子墨水寫的文字必須經(jīng)分析以轉(zhuǎn)換成另一形式,諸如ASCII字符。該分析包括書寫識別過程,該過程基于形成電子墨水詞的單個電子墨水筆畫而識別字符。
書寫識別算法近年來得到了大大的改善,但當電子墨水以某角度書寫時其準確性減少。類似地,當分開的墨水筆畫組不能很容易地被識別時,諸如當兩個詞寫的很相近時,許多識別算法不能準確地識別電子墨水。一些識別算法還可能不正確地將實際上是繪圖的電子墨水識別為文字。例如,用于可能使用加下劃線、加亮(highlights)、畫圈或交叉的電子墨水筆畫對寫入的文字的一部分進行加注解。書寫識別算法可能不正確地將這些注解筆畫識別為劃線、數(shù)字零或字母“O”。
許多識別算法的準確性可以通過在使用書寫識別算法前,對電子墨水“作語法分析”(例如通過分析電子墨水的布局和/或“分類”)而大大改善。分類過程一般確定電子墨水筆畫是否是繪圖的一部分(即繪圖墨水筆畫)或書寫文字的一部分(即文字墨水筆畫)。用于標識其它筆畫類型的分類算法也是可能的。布局分析過程一般將電子墨水筆畫分成有意義的關(guān)聯(lián),諸如詞、行和段落。布局分析和分類過程因此可以用于標識電子墨水集合中的哪個筆畫屬于單個詞,哪些電子墨水詞與用電子墨水文字寫入的單行相關(guān)聯(lián),電子墨水寫的哪些文字行與段落相關(guān)。
雖然布局分析和分類墨水可以大大改善電子墨水的識別,許多軟件應(yīng)用程序研發(fā)者在識別電子墨水前未意識到這些行為的重要性。直到最近,還沒有可用的布局和分類算法與現(xiàn)存的軟件應(yīng)用程序一起使用。例如MicrosoftWindows XP Tablet PC Edition Version 2002操作系統(tǒng)一般與MicrosoftWindows Journal軟件應(yīng)用程序一起賣出,用于存儲、顯示以及操控電子墨水。雖然Microsoft Windows Journal軟件應(yīng)用程序使用內(nèi)部語義分析器,直到最近該語義分析器對于在操作系統(tǒng)上運行的其它軟件應(yīng)用程序是不可用。
雖然來自Windows Journal軟件應(yīng)用程序的語義分析過程現(xiàn)在可被其它軟件應(yīng)用程序分開訪問,該語義分析器的使用不是眾所周知的,且該語義分析器不能很容易地與許多軟件應(yīng)用程序一起使用,或用于用戶期望輸入書寫輸入的地方。而且,即使軟件應(yīng)用程序研發(fā)商要建立專門與期望的軟件應(yīng)用程序一起使用的語義分析器(這本身可能是一個困難且耗時的過程),執(zhí)行語義分析的過程可能非常耗時。例如,使用相對較快的微處理器對幾筆電子墨水進行語義分析,語義分析器需要幾秒甚至幾分鐘。如果軟件應(yīng)用程序必須停止操作以等待語義分析過程完成,則軟件應(yīng)用程序?qū)τ诖蠖鄶?shù)用戶的實際使用而言會過于緩慢。
因此,需要一種電子墨水處理技術(shù),該技術(shù)可以為多種軟件應(yīng)用程序使用,例如用于分析電子墨水的布局,對其進行分類和識別。另外,需要一種電子墨水處理技術(shù),該技術(shù)可以處理電子墨水,然而仍能允許使用該技術(shù)的軟件應(yīng)用程序接收新的電子墨水輸入,而不使得墨水處理的結(jié)果無效。
本發(fā)明的簡要概述較有優(yōu)勢地,本發(fā)明的各個示例提供了電子墨水處理技術(shù),該技術(shù)可以被多個軟件應(yīng)用程序用于處理電子墨水。另外,這些電子墨水處理技術(shù)允許電子墨水相對于實現(xiàn)該技術(shù)的軟件應(yīng)用程序被異步操作,使得電子墨水可以不需要停止也不會大大延遲軟件應(yīng)用程序的操作的情況下被處理。軟件應(yīng)用程序甚至可以在先前的電子墨水輸入正在被處理的同時繼續(xù)接收新的電子墨水輸入。
本發(fā)明的各個示例中,文件或文檔內(nèi)的元素可以基于相互間的空間位置而被描述。例如,電子墨水筆畫和打字文字可以用相同的空間坐標系統(tǒng)描述。使用空間信息描述文檔的元素,管理文檔的軟件應(yīng)用程序可以維持描述其文檔元素間關(guān)系的數(shù)據(jù)結(jié)構(gòu)。特別是,軟件應(yīng)用程序可以維持描述各個文檔元素的類和定義多個文檔元素間關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)。這些關(guān)聯(lián)可以被定義為例如用于將電子墨水筆畫數(shù)據(jù)或其集合與電子文檔內(nèi)的其它元素(諸如詞、行、段落、附圖、表格單元等)相關(guān)聯(lián)的信息。
通過基于其空間位置而描述文件或文檔數(shù)據(jù)結(jié)構(gòu)內(nèi)的文檔元素,多種文件類型的文檔元素可以使用一般的技術(shù)用以標識并操控其文檔元素。尤其是,多個軟件應(yīng)用程序可以基于其空間位置而描述在文檔內(nèi)的文檔元素,并使用該空間位置參考以使用一般的電子墨水分析方法。而且,通過規(guī)定分析的文檔的特定區(qū)域,每個軟件應(yīng)用程序可以將分析過程限定為只有文檔內(nèi)期望的元素。
根據(jù)本發(fā)明的多個示例,為了分析輸入文檔的新的電子墨水輸入,管理文檔的軟件應(yīng)用程序修改與文檔相關(guān)的數(shù)據(jù)結(jié)構(gòu)以包括要分析的新墨水。軟件應(yīng)用程序然后將該數(shù)據(jù)結(jié)構(gòu)(或其相關(guān)的部分)提供給墨水分析工具,它對用于分析的數(shù)據(jù)結(jié)構(gòu)的一些或所有進行復制(并對獨立于應(yīng)用程序文檔數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)的拷貝進行操作)。墨水分析工具將拷貝傳遞到分析過程,諸如語義分析過程(例如布局分析過程和/或分類過程)。軟件應(yīng)用程序可能繼續(xù)其正常操作,包括接收新的電子墨水和/或其它數(shù)據(jù),而墨水分析過程同時在被執(zhí)行。除了接收新的電子墨水外,應(yīng)用程序程序還可以接收任何“其它數(shù)據(jù)”,例如對現(xiàn)存的墨水、文字、圖像、圖形、表格、流程圖、圖例等進行大小、位置或內(nèi)容的修改的數(shù)據(jù);加入附加文字、圖像、圖形、表格、流程圖、圖例等的數(shù)據(jù);刪除現(xiàn)存文字、圖像、圖形、表格、流程圖、圖例等的數(shù)據(jù)。在完成所有期望分析過程后,分析結(jié)果被返回到墨水分析工具。
因此,根據(jù)本發(fā)明的系統(tǒng)和方法的各個示例允許墨水分析過程與使用墨水分析過程的軟件應(yīng)用程序的操作異步執(zhí)行。該一步操作允許用戶繼續(xù)使用軟件應(yīng)用程序而不被分析過程所延時。另外,它使得多個分析過程能同時執(zhí)行。
根據(jù)接收到的分析結(jié)果,墨水分析工具從軟件應(yīng)用程序獲得電子文檔的數(shù)據(jù)結(jié)構(gòu)的當前版本(這可能包含當實行分析過程時新的和/或修改后的輸入數(shù)據(jù)),并使得分析結(jié)果與當前的數(shù)據(jù)結(jié)構(gòu)版本協(xié)調(diào)(reconcile)。通過分析的結(jié)果和數(shù)據(jù)結(jié)構(gòu)的當前版本的協(xié)調(diào),本發(fā)明的示例可以避免更復雜的技術(shù),諸如“鎖定”以異步地訪問正在為軟件應(yīng)用程序使用的數(shù)據(jù)。而且該協(xié)調(diào)可以為任何軟件應(yīng)用程序調(diào)用,而不需要復雜的內(nèi)部鎖定規(guī)定。
在將分析結(jié)果與數(shù)據(jù)結(jié)構(gòu)的當前版本協(xié)調(diào)后,墨水分析工具然后將協(xié)調(diào)的分析結(jié)果的復制提供給另一分析過程,諸如書寫識別過程。同樣,軟件應(yīng)用程序可以繼續(xù)其正常操作,包括接收新的電子墨水輸入和/或其它數(shù)據(jù),而同時正在第二墨水分析過程。在完成了所有的期望的第二分析過程后,第二分析過程的結(jié)果被返回到墨水分析工具。墨水分析工具然后從軟件應(yīng)用程序獲得數(shù)據(jù)結(jié)構(gòu)的當前版本(這可能在同樣包括新和/修改后的數(shù)據(jù)),并使得第二分析結(jié)果與數(shù)據(jù)結(jié)構(gòu)的當前版本一致。墨水分析工具然后使用協(xié)調(diào)的第二分析過程的結(jié)果以更新數(shù)據(jù)結(jié)構(gòu)。當然,可以使用任何數(shù)量的墨水分析過程和/或階段而不偏離本發(fā)明。
上述的多種墨水分析過程以及空間信息的使用可以用于提供在電子文檔內(nèi)豐富、靈活以及自然的墨水注解,該空間信息將電子墨水數(shù)據(jù)與電子文檔的其它特征相關(guān)或相鏈接。例如,本發(fā)明的方面可以用于提供電子墨水注解,該注解可以根據(jù)對于正在被注解的基礎(chǔ)(underlying)的文檔元素的變化而動態(tài)地移動和/或改變。用戶一般以多種方式對文檔進行注解,例如他們可以畫圈、加下劃線、加亮或刪去單詞;在邊上寫入注釋;畫出到位于邊上的注解的箭頭或其它指針等。而且,用戶可以在更多樣的不同文檔類型中進行注解,包括例如文字、電子數(shù)據(jù)表、繪圖、幻燈片、表格、圖表、圖形、流程圖等。
將電子墨水注解平滑地整合入電子文檔需要注解在基礎(chǔ)的電子文檔因為某個原因改變時也作出適當?shù)姆磻?yīng)。例如,如果用戶在電子文檔內(nèi)圈出一個單詞(作為注解),且然后在該單詞前的文檔的某處加入文字,這可能會導致加圈的單詞的移動。在該實例中,加圈的注解應(yīng)該移動,保持和單詞在一起。作為另一例,如果用戶從加圈的單詞中加入或移去了字符,或者改變改變了其大小,則加圈的注解應(yīng)擴展或收縮以適應(yīng)單詞的新大小。最好,當因為某種原因加下劃線的電子文檔重新流動和/或更新互相相關(guān)的其組成元素(例如段落、圖片、專欄)的位置和/或頁數(shù)時。電子墨水注解還會重新進行位置排列,并適當?shù)匚挥谂c基礎(chǔ)的文字或其它信息相關(guān)的位置。除非注解以該種方式對加基礎(chǔ)的電子文檔文字進行反應(yīng),否則在注解后對實時的電子文檔進行編輯或共享會變得很不實際,打印輸出仍是最簡單且最有用的加注解的方法。
確定如何合適地改變注解的方法取決于各種與注解和電子文檔相關(guān)的因子。例如,在回流情況下合適地改變注解可以取決于例如計算系統(tǒng)(例如語義分析器)的能力(a)將電子墨水標識為注解;(b)標識電子墨水注解類型;以及(c)標識電子墨水與基礎(chǔ)的電子文檔內(nèi)的特定元素的關(guān)系。雖然可查詢(query)用于獲得一些或所有該種類型的信息,相比在紙上加注解的過程,該種系統(tǒng)使得用戶的使用體驗變得很麻煩。相應(yīng)地,根據(jù)本發(fā)明的各個方面,以上的信息可以從以下推斷出(1)電子墨水本身和(2)基礎(chǔ)的文檔的內(nèi)容,包括與電子墨水相關(guān)的文檔內(nèi)的各個元素的空間位置。
由于確定墨水注解的意義可能非常復雜且困難,期望每個應(yīng)用程序能單獨實現(xiàn)標識邏輯的注解是不實際的,其中用戶可能希望這些應(yīng)用程序的文檔進行加注。而且,最好能提供一種可以再次使用的組件,用于幫助該注解功能,且每個應(yīng)用程序可以簡單地整合。例如,就如基于筆的計算系統(tǒng)的操作系統(tǒng)提供電子墨水的收集和翻譯的組件,最好操作系統(tǒng)能提供一種組件,它確定墨水注解的意義(還被稱為“注解語義分析器”),使其在與涉及的墨水一起看來是流利的。
然而標識基礎(chǔ)電子文檔的內(nèi)容在提供“智能”注解能力時有很大的困難。例如,多種不同的應(yīng)用程序有完全不同的存儲、管理以及回流文檔的方法。本發(fā)明提供一種可以再次使用的注解語義分析器,它能確定可能的墨水注解與多種不同類型的電子文檔間的關(guān)系。特別是,根據(jù)本發(fā)明的一些方面,提供給注解語義分析器一種機制,即回到應(yīng)用程序以提供與正在被進行語義分析分析的墨水的相關(guān)信息(例如,與對應(yīng)墨水注解的空間區(qū)域內(nèi)的電子文檔相關(guān)的信息,以提供給墨水注解“上下文”)。該機制非常簡單,能很實際地被整合入任何基于文檔的應(yīng)用,且用于很大的文檔會很有效(這可以在部分內(nèi)經(jīng)處理,諸如頁等)。
根據(jù)本發(fā)明的各個示例的墨水處理技術(shù)因此允許多個軟件應(yīng)用程序能通過墨水分析工具實現(xiàn)電子墨水上的多種處理。而且,使用這些技術(shù)的軟件應(yīng)用程序可以在分析過程時繼續(xù)其正常操作,包括接收新的電子墨水輸入,而不會使得分析過程無效。
附圖簡述本發(fā)明以上和其它對象、特征和優(yōu)勢將從以下的結(jié)合所附附圖的詳細描述中變得清楚且完全可以被理解,其中
圖1說明通用計算機計算環(huán)境的示意圖,其中可實現(xiàn)本發(fā)明的一些方面;圖2說明基于筆的個人計算機(PC)環(huán)境,其中可實現(xiàn)本發(fā)明的一些方面;圖3和4說明與電子文檔注解相關(guān)的本發(fā)明方面的示例實現(xiàn)的各種特征;圖5說明電子文檔的墨水語義分析的一般特征;圖6A到6I說明在實現(xiàn)本發(fā)明的至少一些方面中有用的示例數(shù)據(jù)結(jié)構(gòu);圖7A到12B說明在處理電子文檔的電子墨水注解時的示例電子文檔和有用的相關(guān)示例數(shù)據(jù)結(jié)構(gòu);圖13A到14B說明在處理電子文檔的電子流程特征時的示例電子文檔和有用的相關(guān)示例數(shù)據(jù)結(jié)構(gòu);圖15A到15C說明在處理電子文檔的電子表格特征的示例電子文檔和有用的相關(guān)的示例數(shù)據(jù)結(jié)構(gòu);圖16A-16D根據(jù)本發(fā)明的多個實施例說明處理電子墨水的方法;圖17、19-21以及23-26根據(jù)本發(fā)明的多個示例說明在示例墨水分析期間數(shù)據(jù)對象的轉(zhuǎn)移;圖18和22根據(jù)多個本發(fā)明的示例說明可以被操控的簡單數(shù)據(jù)樹;圖27說明一流程圖,它示出使得分析結(jié)果與文檔的當前狀態(tài)協(xié)調(diào)的方法;以及圖28根據(jù)另一本發(fā)明的示例說明用于異步分析電子墨水的安排。
附圖詳述術(shù)語以下術(shù)語用于該說明書中,且除非特別聲明或上下文中很清楚,術(shù)語有以下提供的意義“呈現(xiàn)”或“被呈現(xiàn)”或“正在呈現(xiàn)”——確定信息(包括文字、圖形和/或電子墨水)如何顯示的過程,無論是在屏幕、打印或以一些其它的方式輸出。
“計算機可讀媒質(zhì)”——任何可以由在計算機系統(tǒng)上的用戶訪問的任何媒質(zhì)。例如但不限制,“計算機可讀媒質(zhì)”可以包括計算機存儲介質(zhì)和通信媒質(zhì)?!坝嬎銠C可讀媒質(zhì)”包括易失和非易失、可移動和非可移動媒質(zhì),它們以任何存儲信息的方法和技術(shù)實現(xiàn),諸如計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)?!坝嬎銠C可讀媒質(zhì)”包括但不限于RAM、ROM、EEPROM、閃存或其它存儲器技術(shù);CD-ROM、數(shù)字化視頻光盤(DVD)或其它光存儲設(shè)備;磁盒式磁帶、磁帶、磁性光盤介質(zhì)或其它存儲設(shè)備;或任何其它用于存儲期望信息且可以為計算機訪問的介質(zhì)。“通信媒質(zhì)”一般體現(xiàn)以已調(diào)數(shù)據(jù)信號的計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),已調(diào)數(shù)據(jù)信號諸如載波或其它傳輸機制。“已調(diào)數(shù)據(jù)信號”意味著信號有一個或多個其特征集合或以一種方式改變以對信號中的信息編碼。例如但不限于,通信媒質(zhì)包括有線媒質(zhì),諸如聲波、RF、紅外線或其它無線媒質(zhì)。任何以上的組合也包括在“計算機可讀介質(zhì)”范圍內(nèi)。
概述根據(jù)本發(fā)明的多個示例,文檔(或其它類型的文件)內(nèi)的元素的屬性可能包括與該文檔內(nèi)的元素的空間位置相關(guān)的信息。因此,電子墨水筆畫和書寫文字可能以對于文檔的相同空間坐標系統(tǒng)而描述和/或以文檔內(nèi)的其它元素的空間關(guān)系或其它關(guān)系而描述。而且,文檔內(nèi)的相關(guān)元素可以簡單地通過標識包含這些元素的文檔的空間區(qū)域和/或通過將這些元素相鏈接而被標識。
使用多個文檔元素間的空間關(guān)系,軟件應(yīng)用程序可以建立并維持描述文件元素間的其它關(guān)系的數(shù)據(jù)結(jié)構(gòu)。例如,軟件應(yīng)用程序可能維持數(shù)據(jù)結(jié)構(gòu),諸如數(shù)據(jù)樹,它定義文檔內(nèi)多個元素的類。因此,數(shù)據(jù)結(jié)構(gòu)內(nèi)的節(jié)點可能對用對應(yīng)書寫的單詞或包含一個或多個墨水筆畫的繪圖,且存儲在節(jié)點內(nèi)的數(shù)據(jù)可能進一步指明該頁上的該單詞的位置。一般存儲的與墨水筆畫和/或電子墨水單詞相關(guān)的任何其它的合適或常規(guī)的數(shù)據(jù)還可以存儲在單詞節(jié)點。
該類型的數(shù)據(jù)結(jié)構(gòu)還可以將文檔元素(諸如單個墨水筆畫或書寫的文字字符)相關(guān)聯(lián)為有意義的組,諸如單詞、單詞行、句子、段落等。因此,如果軟件應(yīng)用程序維持描述書寫電子墨水的段落的文檔樹結(jié)構(gòu),則數(shù)據(jù)結(jié)構(gòu)的葉節(jié)點可能包括與電子墨水的單個筆畫相關(guān)的數(shù)據(jù),且一個或多個筆畫可以在數(shù)據(jù)結(jié)構(gòu)內(nèi)相關(guān)聯(lián),作為對應(yīng)段落內(nèi)的該單詞的單詞節(jié)點(例如,由語義分析器和/或識別器確定的單詞)。樹結(jié)構(gòu)然后可能將單詞節(jié)點與在段落內(nèi)的行對應(yīng)的行節(jié)點相關(guān)聯(lián)。每個行節(jié)點進一步可以與對應(yīng)段落的節(jié)點相關(guān)聯(lián)。而且,軟件應(yīng)用程序可以維持樹或其它數(shù)據(jù)結(jié)構(gòu),它將對應(yīng)電子墨水筆畫和/或一些其它的電子墨水的分組的節(jié)點與對應(yīng)非墨水文檔元素的其它節(jié)點(諸如圖像、墨水繪圖、書寫字符、單詞、行段落等)相關(guān)聯(lián)。這些數(shù)據(jù)結(jié)構(gòu)因此可以用于定義相關(guān)的電子墨水筆畫間的關(guān)系,以區(qū)分從對非墨水文檔元素進行注解的電子墨水筆畫形成書寫文字的不同的電子墨水筆畫,和/或用將電子墨水筆畫與其它文檔元素相鏈接。
如以下詳述,這些數(shù)據(jù)結(jié)構(gòu)根據(jù)本發(fā)明的多個示例與墨水分析工具一起使用以分析在文檔內(nèi)的電子墨水。根據(jù)本發(fā)明的各個示例,軟件應(yīng)用程序可以通過首先為文檔建立數(shù)據(jù)結(jié)構(gòu)而獲得電子墨水的分析。數(shù)據(jù)結(jié)構(gòu)描述已經(jīng)被分析的文檔元素(如果有的話)間的關(guān)系,且因此可以提供任何新的電子墨水可以被分析的上下文。該數(shù)據(jù)結(jié)構(gòu)或“分析上下文對象”還包括任何沒有被分析的電子墨水。即該分析上下文對象還包括電子墨水,還沒有建立該電子墨水與其它文檔元素間的關(guān)系。對于本發(fā)明的一些示例,軟件應(yīng)用程序子自己建立分析上下文對象。然而本發(fā)明的其它實施例中,軟件應(yīng)用程序使用墨水分析工具或其它工具以建立分析上下文對象。
在軟件應(yīng)用程序?qū)⒎治錾舷挛膶ο筇峁┙o墨水分析工具(或墨水分析工具建立分析上下文對象),墨水分析工具對與包含未經(jīng)分析的電子墨水的分析上下文對象的至少部分相關(guān)的信息進行復制或獲取。通過復制或接收與分析上下文對象的期望部分相關(guān)的信息,墨水分析工具可以建立接下來被分析而不改變軟件應(yīng)用程序維持的分析上下文對象的數(shù)據(jù)結(jié)構(gòu)。即該副本是獨立于用于軟件應(yīng)用程序的實際電子文檔的,且因此在以下被稱為“獨立于文檔”的分析上下文對象。
一旦墨水分析工具已經(jīng)建立了獨立于文檔的分析上下文對象,墨水分析工具將該獨立于文檔的分析上下文對象提供給一個或多個分析過程。例如,如果書寫識別要對文檔內(nèi)的未經(jīng)電子墨水實現(xiàn),則墨水分析工具可能將獨立于文檔的分析上下文對象提供給分類和/或布局分析過程,用于將墨水分類為文字和繪圖筆畫(如果必要或期望)和然后將未經(jīng)分析的電子墨水筆畫分組為基于墨水布局的相關(guān)聯(lián)的分組。在分類和/或布局分析過程正在分析獨立于文檔的分析上下文對象時,軟件應(yīng)用程序可以繼續(xù)其正常操作。特別是,軟件應(yīng)用程序可以繼續(xù)接收新的電子墨水輸入和/或任何由應(yīng)用程序程序維持的電子墨水內(nèi)的其它數(shù)據(jù)。
當分析過程諸如語義分析過程已經(jīng)完成其對獨立于文檔的分析上下文對象的分析時,它將分析結(jié)果返回到墨水分析工具。更具體的,語義分析過程(這還包括其它事物,如上所述的分類和布局分析過程)會返回獨立于分析上下文對象的修改版本,該分析上下文對象示出先前未經(jīng)分析的電子墨水的新關(guān)系。由于軟件應(yīng)用程序有空接收新的電子墨水輸入和/或在上述的語義分析操作期間的文檔的任何其它數(shù)據(jù),然而文檔的分析上下文對象的當前版本(即應(yīng)用程序維持的版本)可能不同于原來提供給墨水分析工具的獨立于文檔的分析上下文對象和由語義分析過程的語義分析結(jié)構(gòu)。
相應(yīng)地,在本發(fā)明的示例內(nèi),墨水分析工具可以獲得來自軟件應(yīng)用程序的分析上下文對象的當前版本,且使得語義分析的結(jié)果于分析上下文對象的當前版本協(xié)調(diào)。在該使協(xié)調(diào)過程中,墨水分析工具會更新分析上下文對象的當前版本以反應(yīng)語義分析過程的結(jié)果。墨水分析工具然后會將協(xié)調(diào)后的數(shù)據(jù)從當前分析上下文對象傳遞到用于識別的書寫識別過程。然而在本發(fā)明的其它示例內(nèi),墨水分析工具可以略去使協(xié)調(diào)過程,取而代之將語義分析結(jié)果直接傳遞到書寫識別過程。
一旦語義分析與分析上下文對象的當前版本相協(xié)調(diào),軟件應(yīng)用程序可能再次回到其常規(guī)操作,且因此可能繼續(xù)接收新的電子墨水輸入和/或任何與文檔相關(guān)的其它數(shù)據(jù)。同時,識別過程從當前分析上下文對象(或者語義分析結(jié)果)中分析協(xié)調(diào)的數(shù)據(jù)。在識別過程完成其對協(xié)調(diào)的數(shù)據(jù)(或語義分析結(jié)果)的分析,它將其識別結(jié)果返回到模式分析工具。同樣,由于軟件應(yīng)用程序可能在識別過程中已經(jīng)接收了新的電子墨水輸入以及/或文檔的任何其它數(shù)據(jù),墨水分析工具從軟件應(yīng)用程序獲得分析上下文對象的當前版本。墨水分析工具然后將來自識別過程的結(jié)果與分析上下文對象的當前版本協(xié)調(diào)以用識別的結(jié)果更新分析上下文對象的當前版本。
示例操作環(huán)境圖1說明了可以用于實現(xiàn)本發(fā)明的各個方面的通用數(shù)字計算環(huán)境的示意圖。在圖1內(nèi),計算機100包括處理單元110、系統(tǒng)存儲器120,和系統(tǒng)總線130,系統(tǒng)總線130耦合多個系統(tǒng)組件,包括將系統(tǒng)存儲器120耦合到處理單元110。系統(tǒng)總線130可能是任何類型的總線結(jié)構(gòu),包括使用多種總線結(jié)構(gòu)的任何一種的存儲器總線或存儲器控制器、外圍總線和本地總線。系統(tǒng)存儲器120可能包括只讀存儲器(ROM)140和隨機訪問存儲器(RAM)150。
基本輸入/輸出系統(tǒng)160(BIOS)包含幫助在計算機100內(nèi)的元件間傳遞消息的基本例程,諸如在啟動時的例程,它們被存儲在ROM 140內(nèi)。計算機100還可能包括硬盤驅(qū)動170,用于從硬盤(未示出)中讀出或?qū)懭?;磁盤驅(qū)動180,用于從可移動磁盤190讀出或?qū)懭?;以及光盤驅(qū)動191,用于從諸如CD ROM或其它光媒質(zhì)的可移動光盤192讀出或?qū)懭搿S脖P驅(qū)動170、磁盤驅(qū)動180以及光盤驅(qū)動191通過硬盤驅(qū)動接口192、磁盤驅(qū)動接口193和光盤驅(qū)動接口194相應(yīng)地連到系統(tǒng)總線130。這些驅(qū)動和其相關(guān)聯(lián)的計算機可讀媒質(zhì)提供了計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊以及其它的個人計算機100的數(shù)據(jù)的非易失存儲??梢詾轭I(lǐng)域內(nèi)的技術(shù)人員理解其它類型的計算機可讀媒質(zhì)可可以用于示例操作環(huán)境,諸如磁帶、閃存卡、數(shù)字視頻盤、Bernoulli錄音盒帶、隨機訪問存儲器、只讀存儲器等。
多個程序模塊可能存儲在硬盤170上、磁盤190、光盤192、ROM 140或RAM 150,包括操作系統(tǒng)195、一個或多個應(yīng)用程序196、其它程序模塊197以及程序數(shù)據(jù)198。用戶可能在計算機100內(nèi)通過諸如鍵盤101和定點設(shè)備102的輸入設(shè)備輸入命令和信息。其它輸入設(shè)備(未示出)可能包括麥克風、操縱桿、游戲墊、衛(wèi)星電視天線、掃描儀等。這些與其它輸入設(shè)備經(jīng)常通過耦合到系統(tǒng)總線的串行端口接口106連到處理單元110,該接口耦合到系統(tǒng)總線130,但它們可能由其它接口連接,諸如并行端口、游戲端口或通用串行總線(USB)。而且這些設(shè)備可能通過合適的接口(未示出)直接耦合到系統(tǒng)總線130。
顯示器107或其它類型的顯示設(shè)備還可以通過諸如視頻適配器108的接口連到系統(tǒng)總線130。除了顯示器107外,個人計算機一般包括其它外圍輸出設(shè)備(未示出),諸如揚聲器和打印機。在一例中,提供了筆數(shù)字化儀165和相伴的筆和記錄筆166以數(shù)字化地捕獲徒手輸入。雖然筆數(shù)字化儀165和串行端口界接口106間的連接在圖1內(nèi)示出,但實際上,筆數(shù)字化儀165可能直接耦合到處理單元110,或它可以以任何合適的方式耦合到處理單元110,如領(lǐng)域內(nèi)已知的并行端口或另一接口以及系統(tǒng)總線130。另外,雖然數(shù)字化儀165在圖1中被示為顯示器107的一部分,數(shù)字化儀165的可使用輸入?yún)^(qū)域可以與顯示器107的顯示區(qū)域一起共同擴展。而且,數(shù)字化儀165可能被整合在顯示器107內(nèi),或它可能作為單個設(shè)備覆蓋或附加到顯示器107。
計算機100在使用邏輯連接到一個或多個諸如遠程計算機109的遠程計算機的網(wǎng)絡(luò)環(huán)境內(nèi)操作。遠程計算機109可以是服務(wù)器、路由器、網(wǎng)絡(luò)PC、對等設(shè)備或其它公共網(wǎng)絡(luò)節(jié)點,且它一般包括許多或所有的所述的與計算機100相關(guān)的元件,雖然是為了簡潔,且在圖1中只說明了存儲設(shè)備111。圖1內(nèi)描述的邏輯連接包括本地局域網(wǎng)(LAN)112以及廣域網(wǎng)(WAN)113。該種網(wǎng)絡(luò)環(huán)境在使用有線和無線連接的辦公室、企業(yè)計算機網(wǎng)絡(luò)、內(nèi)部網(wǎng)和因特網(wǎng)內(nèi)很常見。
當用于LAN網(wǎng)絡(luò)環(huán)境內(nèi)時,計算機100通過網(wǎng)絡(luò)接口或適配器114連到本地網(wǎng)絡(luò)112。當用于WAN網(wǎng)絡(luò)環(huán)境時,計算機100一般包括調(diào)制解調(diào)器115或其它在WAN 113上建立通信的方法,諸如因特網(wǎng)。調(diào)制解調(diào)器115可能是內(nèi)置或外置的,通過串行端口接口106連到系統(tǒng)總線130。在網(wǎng)絡(luò)環(huán)境中,與個人計算機100相關(guān)描述的程序模塊或計算機100的部分可以存儲在遠程存儲設(shè)備內(nèi)。
可以理解示出的網(wǎng)絡(luò)連接為示例且可以使用在計算機間建立通信連接的其它技術(shù)。假設(shè)已存在的諸如TCP/IP、以太網(wǎng)、FTP、HTTP、UDP等的多種已知協(xié)議,系統(tǒng)可以在用戶—服務(wù)器配置內(nèi)操作以使得用戶能從基于網(wǎng)頁的服務(wù)器獲取網(wǎng)頁。任何常規(guī)的網(wǎng)頁瀏覽器可以被用于顯示和操控網(wǎng)頁上的數(shù)據(jù)。
雖然圖1的環(huán)境示出示例環(huán)境,但可以理解也可以使用其它計算環(huán)境。例如,本發(fā)明的一個或多個計算環(huán)境可以使用帶有比圖1和上述示出的所有方面少的環(huán)境,且這些方面可以以不同的組合或子組合出現(xiàn),這對于領(lǐng)域內(nèi)的技術(shù)人員是很明顯的。
圖2說明可以根據(jù)本發(fā)明的各個方面使用的基于筆的個人計算機(PC)201。圖1的系統(tǒng)內(nèi)的任何或所有的特征、子系統(tǒng)和功能可以包括在圖2的計算機內(nèi)。基于筆的個人計算機系統(tǒng)201包括大顯示表面202,例如數(shù)字化平面顯示,諸如液晶顯示(LCD)屏幕,其上顯示了多個窗口203。使用數(shù)字化儀204,用戶可以選擇在數(shù)字化顯示區(qū)域上加亮并書寫。合適的數(shù)字化顯示屏的示例包括電磁筆數(shù)字化儀,諸如Mutoh公司(現(xiàn)在被稱為FinePoint創(chuàng)新公司)或Wacom技術(shù)公司提供的筆數(shù)字化儀??梢允褂闷渌愋偷墓P數(shù)字化儀,例如光數(shù)字化儀和觸屏數(shù)字化儀?;诠P的計算系統(tǒng)201對使用記錄筆204進行的姿勢進行解釋以操控數(shù)據(jù)、輸入文字并執(zhí)行常規(guī)的計算機應(yīng)用程序任務(wù),諸如建立、編輯并修改電子數(shù)據(jù)表、word處理程序等。
記錄筆204可能備有按鈕或其它特征以增加其功能。在一例中,記錄筆204會被實現(xiàn)為“鉛筆”或“筆”,其中一端由寫入部分組成,另一端由“擦除”端組成,且當在顯示上移動時,指明要被擦除的顯示上的電子墨水部分。也可以使用其它類型的輸入設(shè)備,諸如鼠標、軌跡球、鍵盤等。另外,用戶自己的手指可以用于在對觸摸敏感或?qū)咏舾械娘@示上用于選擇或指明顯示圖像的部分。因此,術(shù)語“用戶輸入設(shè)備”如在此使用的,用于帶有更廣泛的定義且包括許多已知的輸入設(shè)備的變體。
在各個示例中,系統(tǒng)提供墨水平臺作為應(yīng)用程序可以捕獲、操控并存儲墨水的一組COM(組件對象模型)服務(wù)。墨水平臺還可以包括標記語言,包括類似可擴展標記語言(XML)的語言。另外,系統(tǒng)可能使用DCOM作為另外的實現(xiàn)。但可能使用另外的實現(xiàn)包括微軟公司的Win32編程模型和.Net編程模型。這些平臺可以經(jīng)商業(yè)購買且在領(lǐng)域內(nèi)是已知的。
除了與基于筆的計算系統(tǒng)或“薄形PC”(例如可轉(zhuǎn)變的筆記本電腦或“板”形薄形PC)的最大性能一起使用,本發(fā)明的該方面可以與其它類型的基于筆的計算系統(tǒng)一起使用以及/或其它接受作為電子墨水的數(shù)據(jù)和/或電子筆或記錄筆輸入,諸如手持或掌上計算系統(tǒng);個人數(shù)字助理;口袋個人計算機;移動和蜂窩電話,尋呼機和其它通信設(shè)備;手表;電器;和任何以下設(shè)備或系統(tǒng)包括顯示器或其它顯示設(shè)備和/或向用戶表示打印的或圖形信息的數(shù)字化儀,以及/或允許使用電子筆或記錄筆的輸入,或可以處理由另一設(shè)備收集的電子墨水(例如可以處理由薄形PC收集的電子墨水的常規(guī)臺式機)。
本發(fā)明現(xiàn)在與其余的附圖一起描述,這說明本發(fā)明的多個示例和幫助解釋本發(fā)明的信息。包含在該詳細描述內(nèi)的這些特定的附圖和信息不應(yīng)被理解為限制發(fā)明。
空間文檔視圖抽象如上所述,本發(fā)明的一些方面一般涉及用于在電子文檔內(nèi)使用電子墨水而提供更豐富和更通用的注解的系統(tǒng)和方法。以下更詳細地描述了本發(fā)明的多個方面和示例。
A.本發(fā)明的一般概述圖3根據(jù)本發(fā)明的至少一些示例說明系統(tǒng)和方法的操作。尤其是,如圖3內(nèi)說明,用戶可以以一定方式與電子文檔300(圖3內(nèi)的文檔A)交互,例如,通過向文檔300加入電子墨水。在說明的示例中,電子文檔300包括電子或書寫的文本302(說明示例中的“采樣文本”)和墨水繪圖304(說明示例中的房子)。當然,電子文檔300可以包括任何數(shù)據(jù)或信息,而不偏離本發(fā)明,諸如電子文本、電子墨水(繪圖或文本)、圖像、圖形、表格、圖表、其它圖形或電子信息和/或其組合。為了該示例,假設(shè)原來的電子文檔300(在本申請中還被稱為“基文檔”或“基部分”)。在該示例中,隨著用戶重新瀏覽文檔A 300,她決定將電子墨水注解包括到文檔300內(nèi)。尤其是,在說明的示例中,注解包括在電子文本302的一些部分308周圍的圈306。
在該例中,在用戶輸入注解后,應(yīng)用程序會調(diào)用語義分析器310并請求對新輸入的電子墨水數(shù)據(jù)進行語義分析(如上所述,“語義分析”可能包括例如將電子墨水分類為多種墨水類型(例如,繪圖、文本、流程圖、音樂等)和/或墨水布局分析(例如確定墨水筆畫間的空間和位置關(guān)系,并將其分成合適的分組),以及其它的分析過程)。尤其是,應(yīng)用程序會將輸入電子墨水數(shù)據(jù)(在該例中,表示注解306)發(fā)送到語義分析器310,作為未經(jīng)分類的墨水數(shù)據(jù)。這在圖3內(nèi)用輸入箭頭312說明。
可選地,在該時間左右或在該時間處,應(yīng)用程序可以將一些或所有與基礎(chǔ)電子文檔300相關(guān)的數(shù)據(jù)發(fā)送到語義分析器310。該數(shù)據(jù)可能包括例如與文檔300內(nèi)的信息的空間布局相關(guān)的數(shù)據(jù),諸如電子文本302、繪圖304的位置等。另外,應(yīng)用程序可能發(fā)送在文檔內(nèi)指明數(shù)據(jù)的等級結(jié)構(gòu)的數(shù)據(jù),這將在以下詳細描述。作為另一示例,這也將在以下詳細描述,語義分析器310可以調(diào)回到應(yīng)用程序,請求一些與電子文檔300相關(guān)的數(shù)據(jù),諸如與與新的未經(jīng)分類的墨水相關(guān)聯(lián)的空間區(qū)域的電子文檔300(在該實例中,數(shù)據(jù)表示書寫文本和空間位于接近注解306的信息)。該到語義分析器310的數(shù)據(jù)輸入在圖3內(nèi)用輸入箭頭314說明。當然,未經(jīng)分類的墨水和先前分析的數(shù)據(jù)可以同時被發(fā)送以及/或?qū)φZ義分析器可用,而不偏離本發(fā)明。
語義分析器310接受輸入電子文檔數(shù)據(jù)314和輸入的未經(jīng)分類的墨水數(shù)據(jù)312,并使用該信息將新的電子墨水數(shù)據(jù)分類為墨水類型。該墨水可以被分類為多種不同的墨水類型,而不偏離本發(fā)明,且多種可能墨水類型的示例在以下更詳細地經(jīng)描述。對于本示例,基于包含在基礎(chǔ)文檔300內(nèi)的輸入墨水306和信息302,根據(jù)本發(fā)明該示例的語義分析器310可能確定并將輸入墨水306作為注解分類,或更特定地將其分類為對應(yīng)包含特定書寫文本的包含注解(例如圈)的墨水繪圖。當然,其它的注解類型也是可能的,諸如加亮注解,“指向”注解、“指自”注解、錨注解(例如,不需要指向或指自)、水平跨度、垂直跨度等,且多個示例更詳細地在以下進行描述。
一旦經(jīng)語義分析,與注解306相關(guān)聯(lián)的數(shù)據(jù)可能被包括在“文件樹”等級數(shù)據(jù)結(jié)構(gòu)內(nèi),該數(shù)據(jù)結(jié)構(gòu)與電子文檔300相關(guān)聯(lián)(或任何其它合適或期望的數(shù)據(jù)結(jié)構(gòu)),且該數(shù)據(jù)結(jié)構(gòu)(或用于修改由應(yīng)用程序維持的現(xiàn)存數(shù)據(jù)結(jié)構(gòu)的指令)可能被發(fā)送回應(yīng)用程序,如圖3內(nèi)為箭頭316指明。如果期望,還可以從語義分析器310返回其它數(shù)據(jù)到應(yīng)用程序,而不偏離本發(fā)明。例如,如在圖3內(nèi)指明的,與識別分析過程結(jié)果相關(guān)聯(lián)的數(shù)據(jù)(諸如書寫識別器或其它識別器)可以被返回到應(yīng)用程序,如果語義分析器310動作包括對一個或多個識別器模塊、組件和/或程序的調(diào)用。
圖4說明在本發(fā)明的一些示例中使用的各個特征的實現(xiàn)400的示例。如說明的,生成、存儲和/或由應(yīng)用程序400a作為數(shù)據(jù)結(jié)構(gòu)或文檔模型402維持的電子文檔(諸如圖3的文檔A)。該數(shù)據(jù)結(jié)構(gòu)402可能是等級數(shù)據(jù)結(jié)構(gòu)或任何其它期望或合適的數(shù)據(jù)結(jié)構(gòu)而不偏離本發(fā)明。應(yīng)用程序400a包括“分析上下文”對象404,它包含鏡像副本、選擇副本或其它與數(shù)據(jù)結(jié)構(gòu)402相關(guān)的信息(例如分析上下文對象404可能是“翻譯”層,其中分析上下文對象404上的查詢被轉(zhuǎn)換程自然文檔模式結(jié)構(gòu)內(nèi)的查詢—這樣,根據(jù)本發(fā)明的方面的語義分析技術(shù)可以為與多種不同的自然應(yīng)用程序一起使用而經(jīng)翻譯)?!捌脚_”400b或該示例實現(xiàn)400的操作系統(tǒng)邊包括“墨水分析器”方法406,它可以為應(yīng)用程序400a調(diào)用。應(yīng)用程序400a調(diào)用墨水分析方法406并將其傳遞到參考分析上下文對象404。墨水分析器方法406回調(diào)用語義分析器408(以及該示例中平臺400b的一部分),語義分析器對輸入數(shù)據(jù)的布局進行分類和分析,如一般上述。根據(jù)本發(fā)明的示例實施例實現(xiàn)的操作在以下的墨水分析部分詳述。一旦語義分析器408完成器分析和處理,平臺400b可以將數(shù)據(jù)發(fā)送回應(yīng)用程序400a以使得文檔模型402和/或分析上下文對象404基于語義分析器處理和結(jié)構(gòu)而重建其數(shù)據(jù)結(jié)構(gòu),如在圖4的箭頭410處一般說明的。
圖5一般說明在本發(fā)明的至少一些示例中用于存儲電子文檔數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)的示例,例如作為“分析上下文”對象404的一部分、作為文檔模型402或作為由語義分析器408生成和/或輸出的數(shù)據(jù)結(jié)構(gòu)。在圖5內(nèi)尤其說明了示例電子文檔500。當存儲為分析上下文對象502或進行語義分析時,數(shù)據(jù)結(jié)構(gòu)可能包括被分類或安排成不同的分組或“節(jié)點”的多個文檔元素。例如,如圖5內(nèi)說明,電子文檔500包括三個電子文本段落504、506和508;一個電子墨水繪圖510以及一個電子墨水注解512。在圖5內(nèi)將用于電子文檔500的示例分析上下文數(shù)據(jù)結(jié)構(gòu)502示出為頂層元素列表。特別是,節(jié)點元素504(a)對應(yīng)電子文檔內(nèi)的段落504,節(jié)點元素506(a)對應(yīng)電子文檔內(nèi)的段落506,節(jié)點元素508(a)對應(yīng)電子文檔內(nèi)的段落508,節(jié)點元素510(a)對應(yīng)電子文檔內(nèi)的墨水繪圖510,以及節(jié)點元素512(a)對應(yīng)電子文檔內(nèi)的墨水注解512。另外的節(jié)點可能被存儲在數(shù)據(jù)結(jié)構(gòu)(例如等級安排內(nèi))作為圖5內(nèi)說明的頂層節(jié)點504a、506a、508a、510a和512a的父節(jié)點和/或自節(jié)點,如下將詳細描述。
B.上下文節(jié)點和等級數(shù)據(jù)結(jié)構(gòu)圖6A到6I根據(jù)本發(fā)明的一些示例說明多個上下文節(jié)點的示例以及數(shù)據(jù)結(jié)構(gòu),它們可以用于構(gòu)建、分析電子文檔數(shù)據(jù)并對其進行語義分析,諸如分析上下文對象。圖6A說明示例數(shù)據(jù)結(jié)構(gòu)600,它可能用于存儲未經(jīng)分類的墨水數(shù)據(jù)(例如由用戶新近輸入的墨水,它還沒有經(jīng)語義分析)。該示例數(shù)據(jù)結(jié)構(gòu)600包括根節(jié)點602(這可能對應(yīng)應(yīng)用程序中的整個電子文檔、文檔的特定頁或一些合適或期望的數(shù)據(jù)分組,諸如應(yīng)用程序使用的分組)。任何合適和期望的數(shù)據(jù)可以包含在根節(jié)點602中,諸如頁號、到前一頁以及下一頁的指針、邊位置或大小等。每個根節(jié)點602可能包括任何數(shù)量的未經(jīng)分類的墨水節(jié)點604為子節(jié)點,且每個未經(jīng)分類的墨水節(jié)點604還進一步可能包括任何數(shù)量的單個筆畫節(jié)點606(在等級結(jié)構(gòu)內(nèi)的最后節(jié)點(在該示例中為筆畫節(jié)點606)還可能在該說明書中被稱為“葉子節(jié)點”)。數(shù)據(jù)結(jié)構(gòu)600的多個節(jié)點可能包括任何對應(yīng)節(jié)點的期望或合適的數(shù)據(jù)。例如,筆畫節(jié)點606可能包括數(shù)據(jù)表示數(shù)字化儀點或其它標識電子墨水筆畫的數(shù)據(jù);筆畫位置或定向數(shù)據(jù);筆畫色彩數(shù)據(jù);筆畫壓力數(shù)據(jù);筆畫輸入計時數(shù)據(jù);筆畫ID數(shù)據(jù);和/或任何其它的常規(guī)或有用的數(shù)據(jù),用于在能接收電子墨水的系統(tǒng)和方法中存儲筆畫信息。類似地,未經(jīng)分類的墨水節(jié)點604可能包括任何與墨水或節(jié)點相關(guān)聯(lián)的期望或合適的數(shù)據(jù),諸如數(shù)據(jù)表示包含在節(jié)點內(nèi)的所有筆畫的邊界框的大??;邊界框位置;輸入信息;墨水的幾何信息(諸如例如凸殼信息);和/或任何其它常規(guī)或有用的與包括在節(jié)點內(nèi)的未經(jīng)分類的墨水筆畫相關(guān)的數(shù)據(jù)?;蛘撸绻谕?,筆畫數(shù)據(jù)一般可以被保存為另一節(jié)點(例如單詞節(jié)點、表格節(jié)點等)的特性,而不是文檔樹內(nèi)的分開節(jié)點。
一旦未經(jīng)分類的墨水被發(fā)送到分類器、布局分析器、識別器和/或另一語義分析系統(tǒng),至少一部分墨水可以相關(guān)聯(lián)在一起和/或被分類為多種不同類型,且與墨水相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)可以被改變而對應(yīng)各種相關(guān)和其分類為的類型。圖6B說明電子墨水的示例數(shù)據(jù)結(jié)構(gòu)610,它被分類為墨水文本。使用語義分析技術(shù),包括在領(lǐng)域內(nèi)已知和使用的語義分析器,輸入電子墨水筆畫(例如在下筆事件和時間上接著的提筆事件或一些同樣的方式收集的電子墨水數(shù)據(jù))可以經(jīng)語義分析并以等級方式存儲,其中相關(guān)的單個墨水筆畫可以經(jīng)分組在一起并存儲為墨水單詞,線性安排的墨水單詞可以經(jīng)組合在一起并存儲為墨水行,相關(guān)的墨水行可以被分組在一起并存儲為墨水段落,且相關(guān)的墨水段落可以被存儲為電子文檔(例如在單個的頁部分,作為整個文檔或以任何合適的根分組)。對應(yīng)經(jīng)該方式語義分析并存儲的電子墨水數(shù)據(jù)示例等級數(shù)據(jù)結(jié)構(gòu)610,如圖6B說明,可能包含根節(jié)點612,這可能對應(yīng)整個電子文檔、頁、或另外為應(yīng)用程序使用的分組。每個根節(jié)點612可能包含任何數(shù)量的對應(yīng)段落或類似的電子墨水筆畫分組的節(jié)點614。段落節(jié)點614可以包含任何數(shù)量的單個行節(jié)點616,這接著可以包含任何數(shù)量的單個墨水單詞節(jié)點618,這進一步還可以包含任何數(shù)據(jù)量的單個筆畫節(jié)點620,該節(jié)點對應(yīng)輸入電子墨水數(shù)據(jù)的單個筆畫??蛇x地,如上所述,筆畫數(shù)據(jù)可以被存儲為相關(guān)聯(lián)的單詞節(jié)點的“特性”,如果需要。多個節(jié)點612、614、616、618和620可以存儲任何與多個單個筆畫或包含在節(jié)點內(nèi)的筆畫的集合相關(guān)的合適數(shù)據(jù),類似于空間定向或定位數(shù)據(jù)和/或上述類似的其它數(shù)據(jù)。
其它對應(yīng)輸入電子墨水筆畫的數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu)安排也是可能的,而不偏離本發(fā)明。例如,分類、布局分析或識別器技術(shù)可以確定輸入電子墨水形成墨水繪圖。圖3說明示例墨水繪圖304,它包含幾個單個墨水筆畫。圖6C和6D說明示例等級數(shù)據(jù)結(jié)構(gòu),它可以用于被確定于墨水繪圖相關(guān)的電子墨水數(shù)據(jù)的分組和存儲。如在圖6C內(nèi)示出的,數(shù)據(jù)結(jié)構(gòu)630包括根節(jié)點632(這可能對應(yīng)整個電子文檔、電子頁、或一些其它數(shù)據(jù)的分組,如上所述)。每個根節(jié)點632可能包括任何數(shù)量的單個墨水繪圖節(jié)點636(例如,使得每個單個繪圖由單個的節(jié)點,它存儲關(guān)于例如繪圖寬度、繪圖高度、繪圖位置、邊界框大小等的數(shù)據(jù)),且每個墨水繪圖節(jié)點636可能包括任何數(shù)量的單個墨水筆畫節(jié)點638(對應(yīng)組成繪圖的單個墨水筆畫)??蛇x地,墨水筆畫數(shù)據(jù)可以被存儲為其對應(yīng)墨水繪圖節(jié)點(或其它節(jié)點)的“特性”。
圖6D說明包含一個或多個墨水繪圖的電子文檔的另外的數(shù)據(jù)結(jié)構(gòu)630a。在該示例中,電子文檔或數(shù)據(jù)的頁或其它的分組(如由根節(jié)點632a表示)可能包含電子墨水繪圖的一個或多個組(由節(jié)點634a表示),帶有其相關(guān)的一起的數(shù)據(jù),并以圖6C描述的等級方式存儲(例如,整個電子文檔(由根節(jié)點632a表示)可能包括幾個單獨頁(每個由組節(jié)點634a表示),且每個單個頁可以由一個或多個單個墨水繪圖(每個由墨水繪圖節(jié)點636a表示),且每個單個墨水繪圖可能包含一個或多個單個墨水筆畫(每個由筆畫節(jié)點638a或墨水繪圖節(jié)點的特性表示)。值得注意的是組和墨水繪圖可能是同一根節(jié)點或任何組節(jié)點的孩子。另外,如果需要,組節(jié)點可以包含附加的組節(jié)點。當然,還可以使用其它合適的數(shù)據(jù)結(jié)構(gòu)用于存儲墨水繪圖,而不偏離該發(fā)明。
然而,等級數(shù)據(jù)結(jié)構(gòu)不限于與輸入電子墨水數(shù)據(jù)一起使用。輸入打字文本(例如來自鍵盤)還可以關(guān)聯(lián)成多個組并存儲在等級數(shù)據(jù)結(jié)構(gòu)中。圖6E說明該種數(shù)據(jù)結(jié)構(gòu)640的示例。該數(shù)據(jù)結(jié)構(gòu)640可能包括根節(jié)點642(例如類似于上述的根節(jié)點)。每個根節(jié)點642可以包括任何數(shù)量的文本段落節(jié)點644(對應(yīng)文本的段落),每個段落節(jié)點644可以包括任何數(shù)量的文本行節(jié)點646(或者,文本句子節(jié)點),且每個行節(jié)點646可以進一步包含任何數(shù)量的單個文本單詞節(jié)點648。如果需要,文本單詞會進一步被分成單個文本字符節(jié)點,且進一步被分為單個字符特征節(jié)點(與例如每個字符的基線、襯線、上行字母、下行字母特征)。多個節(jié)點可以存儲任何與文本相關(guān)的合適數(shù)據(jù),諸如段落、行或單詞空間位置、內(nèi)容、大小等;頁邊緣;邊大小或位置;頁數(shù)目等。
以上連同圖6A到6E描述的各種數(shù)據(jù)結(jié)構(gòu)說明指包含電子墨水數(shù)據(jù)或電子打字文本數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)。語義分析技術(shù)可以被用于分析、組合、相關(guān)聯(lián)并將這些不同的數(shù)據(jù)類型在單個數(shù)據(jù)結(jié)構(gòu)中組合而不偏離本發(fā)明。圖6F說明示例數(shù)據(jù)結(jié)構(gòu)650,其中電子文檔或其一部分(由根節(jié)點652表示)包含一個或多個單個段落(由段落節(jié)點654表示)以及一個或多個單個行(由行節(jié)點656表示)。行潛在地可以包含打字文本(由文本單詞節(jié)點658表示)和電子墨水文本(由墨水單詞節(jié)點660和墨水筆畫節(jié)點662表示)。每個單個段落、行和單詞節(jié)點(均為打字文本和墨水單詞)會包含合適的獨立數(shù)據(jù),取決于段落、行和單詞的內(nèi)容。附加或或者,單個單詞可以進一步包括墨水字符和打字字符,而不偏離本發(fā)明。
其它電子數(shù)據(jù)還可以被包括在電子文檔的數(shù)據(jù)結(jié)構(gòu)中(包括等級數(shù)據(jù)結(jié)構(gòu))而不偏離本發(fā)明。例如,圖像數(shù)據(jù)(諸如數(shù)字照片、圖形信息等)可以被包括在電子文檔的數(shù)據(jù)結(jié)構(gòu)內(nèi),例如如圖6G的數(shù)據(jù)結(jié)構(gòu)664示出。如在該示例中說明的,數(shù)據(jù)結(jié)構(gòu)664包括電子文檔或其一部分(由根節(jié)點666表示),它包含一個或多個數(shù)據(jù)的單個分組(由組節(jié)點668表示)。該示例中的每個數(shù)據(jù)的分組進一步可能包括電子圖像(由圖像節(jié)點670表示),以及打字文本(由段落節(jié)點672、行節(jié)點674和文本單詞節(jié)點676表示),如連同圖6E和6F一起一般描述的。當然,類似圖6G內(nèi)說明的數(shù)據(jù)結(jié)構(gòu)還包括電子墨水數(shù)據(jù)(例如類似圖6A到圖6D內(nèi)說明的數(shù)據(jù)結(jié)構(gòu))或其它期望的數(shù)據(jù)類型,而不偏離本發(fā)明。
圖6H根據(jù)本發(fā)明的至少一些示例說明可能被使用的另一潛在數(shù)據(jù)結(jié)構(gòu)680的示例。尤其是,圖6H的數(shù)據(jù)結(jié)構(gòu)680對應(yīng)包含一個或多個列表(由列表節(jié)點684表示)的電子文檔或其一部分(由根節(jié)點682表示)。電子文檔內(nèi)的列表可以包含任何數(shù)量的單個列表項(由列表項節(jié)點686表示),且每個列表項可以包含多種不同類型的電子信息。例如,一些列表項可選地可以包含列表墨點,這可以由打字墨點或電子墨水墨點(墨水墨點節(jié)點688包括一個或多個對應(yīng)的墨水筆畫節(jié)點690,這在圖6H的示例中說明)組成。另外,每個列表項可選地可以包括一個或多個電子墨水段落(由節(jié)點鏈692表示),一個或多個墨水繪圖(由節(jié)點鏈694表示),和/或一個或多個打字段落(由節(jié)點鏈696表示)。另外(或或者),每個列表項可選地可以包括一個或多個圖像(由圖像節(jié)點698表示)和/或一個或多個數(shù)據(jù)分組,諸如上述連同圖6D和6G描述的分組(由組節(jié)點鏈700表示)。由于多個節(jié)點和/或節(jié)點鏈692、694、696、698、700可以一般對應(yīng)在圖6A到圖6G內(nèi)說明的示例數(shù)據(jù)結(jié)構(gòu),以及對應(yīng)這些數(shù)據(jù)結(jié)構(gòu)的子集和/或分組,略去進一步的說明。如果需要,在至少一些實例中,單個列表項節(jié)點686還可以自己包含帶有類似圖6H內(nèi)說明的數(shù)據(jù)結(jié)構(gòu)的列表。
圖6I說明另一示例數(shù)據(jù)結(jié)構(gòu)710,它可以用于本發(fā)明的至少一些示例中。該示例數(shù)據(jù)結(jié)構(gòu)710對應(yīng)經(jīng)分析、相關(guān)聯(lián)在一起、經(jīng)分組并存儲為表格的電子數(shù)據(jù)。在該說明的示例中,每個電子文檔或其一部分(由根節(jié)點712表示)可能包括一個或多個表格(由表格節(jié)點714表示)。表格在該例中,可以包括一或多行的信息(由行節(jié)點716表示),且每行可以包括一個或多個單個單元格(由單元格節(jié)點718表示)。單個單元格可以包括一個或多個數(shù)據(jù)結(jié)構(gòu)包括例如上述的多種不同的數(shù)據(jù)結(jié)構(gòu)的任何一種。在說明的示例中,單個表格單元格被示出為潛在包含任何數(shù)量的圖像(由圖像節(jié)點720表示)、任何數(shù)量的打字文本段落(由節(jié)點鏈722表示)、任何數(shù)量的分組(由節(jié)點鏈724表示)、任何數(shù)的墨水繪圖(由節(jié)點鏈724表示)、任何數(shù)量的附加表格(由節(jié)點鏈728表示)以及任何數(shù)目的列表(由節(jié)點鏈730表示)。當然,任何合適或期望的數(shù)據(jù)結(jié)構(gòu)可能被包括在表格內(nèi)而不偏離本發(fā)明,包括上述的多種特定數(shù)據(jù)結(jié)構(gòu)和/或數(shù)據(jù)結(jié)構(gòu)的組合和子集,例如如上述的這些。
任何合適和期望的數(shù)據(jù)可以被存儲在多種不同的節(jié)點內(nèi),包括上述的多種數(shù)據(jù)類型。為了與關(guān)于注解的數(shù)據(jù)處理一起使用,可能在本發(fā)明的至少一些示例中,多個節(jié)點存儲與電子文檔內(nèi)的空間位置、定向或節(jié)點位置相關(guān)的數(shù)據(jù)是有用的,可選地由于該空間信息與電子文檔數(shù)據(jù)結(jié)構(gòu)內(nèi)的其它節(jié)點相關(guān)或相鏈接。
而且其它類型的語義分析器、分類器和/或識別器和數(shù)據(jù)類型可以被使用而不偏離本發(fā)明。例如識別器可以用于分析、識別、分組和/或?qū)⒁韵略叵嚓P(guān)聯(lián)電器或電子符號(例如電阻、電壓源、電容等)、音樂符號、數(shù)學符號、流程元素、圓形分隔統(tǒng)計圖元素等,而不偏離本發(fā)明。
圖6A到6I說明的數(shù)據(jù)結(jié)構(gòu)指示可以根據(jù)本發(fā)明的方面而使用的各種數(shù)據(jù)結(jié)構(gòu)的示例。領(lǐng)域內(nèi)的技術(shù)人員可以意識到使用的特定的數(shù)據(jù)結(jié)構(gòu)可以作很大的改變而不偏離本發(fā)明。例如,可能使用表示不同布局分組的不同的節(jié)點,可以加入附加的節(jié)點類型或一些描述的節(jié)點類型可以被省略而不偏離本發(fā)明(例如可以在表格數(shù)據(jù)結(jié)構(gòu)內(nèi)使用列節(jié)點而不是行節(jié)點)。另外,以上的描述為與語言和文本表示使用而最優(yōu)化,其中一頁中的字符從左到右、從上到下地被讀取。設(shè)計與其它語言和字符安排一起使用并與之對應(yīng)的數(shù)據(jù)結(jié)構(gòu),例如可以使用適合從右到左、從上到下、從下到上以及其組合的語言讀取的數(shù)據(jù)結(jié)構(gòu),而不偏離本發(fā)明。另外,如果需要(特別是對一些語言,諸如亞洲語言),筆畫可以經(jīng)合適地組合成字符,字符然后可以被組成行,而不使用中間“單詞”節(jié)點,如上所述。作為另一示例,可以略去行節(jié)點的使用且單詞節(jié)點可以被組合在一起作為段落和/或其它期望的分組。例如,可以使用適應(yīng)特定語言的特征的這些和其它的數(shù)據(jù)結(jié)構(gòu)的變體,而不偏離本發(fā)明。
C.本發(fā)明的方面在注解上的應(yīng)用本發(fā)明的方面,包括上述的上下文節(jié)點的使用的等級數(shù)據(jù)結(jié)構(gòu),可以被用于提供電子文檔內(nèi)的“智能”電子墨水注解。如上所述,基于筆的計算系統(tǒng)的一個期望且有利的使用是在電子文檔的注解內(nèi)。然而,為了特別有用且有效,在基于筆的計算系統(tǒng)上的文檔內(nèi)用電子墨水進行的注解應(yīng)足夠靈活使得如果且當與在基礎(chǔ)文檔內(nèi)的多個元素相關(guān)聯(lián)的特征因為某個原因改變時(例如邊改變、顯示大小改變、字體改變、信息加入、信息刪除等),注解能基于對基礎(chǔ)文檔內(nèi)的加注的元素的改變準確地改變位置和/或其它特征。這可以例如通過將與注解相關(guān)聯(lián)的至少一個上下文節(jié)點與和基礎(chǔ)文檔相關(guān)聯(lián)的一個或多個上下文節(jié)點相鏈接。在至少一些實例中,與基礎(chǔ)文檔相關(guān)的相關(guān)聯(lián)并存儲的數(shù)據(jù)和/或特征,諸如與空間屬性、位置和/或一個或多個文檔元素的位置,可以用于控制注解的位置、外觀和/或其它特征。
圖7A和7B說明可以通過電子墨水應(yīng)用到電子文檔的注解的一例。如圖7A內(nèi)說明的,電子文檔750包括句子“Today the sky is green”?;诠P的計算系統(tǒng)的用戶使用電子墨水對該文檔750進行注解,在“green”一詞上加下劃線(下劃線注解在參考號752處示出)。圖7B說明對應(yīng)該復合電子文檔750的示例等級數(shù)據(jù)結(jié)構(gòu)760(整個電子文檔750在數(shù)據(jù)結(jié)構(gòu)760內(nèi)由根節(jié)點762示出)。一旦經(jīng)完全語義分析,數(shù)據(jù)結(jié)構(gòu)760會包括示出整個文檔結(jié)構(gòu)的上下文節(jié)點。更特別的是,電子文檔750內(nèi)的與打字文字相關(guān)的信息會經(jīng)分析并相關(guān)聯(lián)在一起以指明電子文檔750包含一個段落(段落節(jié)點764),段落包含行(行節(jié)點766),且行包括五個單詞(對每個單詞“Today”、“the”、“sky”、“is”和“green”相應(yīng)對應(yīng)一個文本單詞節(jié)點768a-768e)。另外,語義分析器會注意與注解752相關(guān)的電子文檔750內(nèi)數(shù)據(jù)的存在,且它會將給數(shù)據(jù)分類為電子墨水繪圖(墨水繪圖節(jié)點770)。另外,基于墨水繪圖筆畫在基礎(chǔ)文檔750內(nèi)的關(guān)于打字文字的定位和位置,語義分析器能識別并將注解分類為“加下劃線”注解并生成下劃線節(jié)點772。另外,語義分析器會將所有對應(yīng)下劃線注解的實際墨水筆畫的筆畫數(shù)據(jù)存儲在一個或多個筆畫葉子節(jié)點774內(nèi)(可選地,筆畫數(shù)據(jù)可能被存儲為下劃線節(jié)點772或另一合適節(jié)點的特性)。
另外,為了維持在與該單個詞“green”在電子文檔750內(nèi)任何地方出現(xiàn)一起的電子墨水下劃線筆畫752(例如如果單詞因為某個原因被移動),數(shù)據(jù)被保存在該示例的數(shù)據(jù)結(jié)構(gòu)760內(nèi),以指明下劃線上下文節(jié)點772(例如在該鏈接示例中“源”上下文節(jié)點)為單詞“green”(在該示例中的“目的地上下文”節(jié)點鏈接到文本單詞節(jié)點768e上,如在圖7B中用箭頭776說明的,且數(shù)據(jù)被保存以指明文本單詞節(jié)點768e為下劃線節(jié)點772鏈接,如箭頭778指明。該鏈接將下劃線節(jié)點772“緊扣”到文本單詞節(jié)點768e(例如“錨”類型鏈接)。相應(yīng)地,如果由于某個原因,存儲在文本單詞上下文節(jié)點768e內(nèi)的數(shù)據(jù)指明單詞“green”的位置在電子文檔內(nèi)改變了,則鏈接776和778會允許應(yīng)用程序檢測到,如果可能,它應(yīng)將下劃線注解呈現(xiàn)到在改變的電子文檔內(nèi)的文本單詞上下文節(jié)點768e的位置和/或空間位置。如另一示例,如果“邊界框”數(shù)據(jù)、單詞寬度數(shù)據(jù)或其它存儲在上下文節(jié)點768e內(nèi)的數(shù)據(jù)指明單詞大小或位置因為某個原因而改變(例如由于字體大小改變、加入字符、刪除字符、改變字符等),則應(yīng)用程序然后可能改變呈現(xiàn)的下劃線的大小(例如伸展或截短),如果可能以對應(yīng)與上下文節(jié)點768e表示的文本單詞相關(guān)的新大小。如果可應(yīng)用,如果對基礎(chǔ)文檔的改變使得加注解的文檔元素出現(xiàn)在多行上(例如由于加入的單詞、以連詞符號連接等),根據(jù)本發(fā)明的至少一些示例的系統(tǒng)和方法可以分解注解的筆畫以出現(xiàn)在多于一行上。而且,可以使用在節(jié)點或任何合適的表示鏈接的數(shù)據(jù)間的任何合適的鏈接安排而不偏離本發(fā)明。
圖8A和8B說明另一注解示例。在該例中,如圖8A說明的,電子文檔800同樣包括句子“Today the sky is green,”但在該實例中,基于筆計算系統(tǒng)的用戶已經(jīng)使用電子墨水對文檔800進行注解以刪去單詞“green”(刪除在參考號802示出)。一旦完全經(jīng)語義分析,圖8B說明對應(yīng)該復合電子文檔800的示例等級數(shù)據(jù)結(jié)構(gòu)810(因為圖8B的大部分的特定上下文節(jié)點對應(yīng)圖7B的上下文節(jié)點,如圖7B相同的參考號在圖8B內(nèi)使用,且略去重復的解釋)。在該實例中,語義分析器會注意電子文檔800內(nèi)的數(shù)據(jù)相對注解802的存在,且它會將該數(shù)據(jù)分類為電子墨水繪圖(墨水繪圖節(jié)點812)。另外,基于相對于在文檔800內(nèi)的基礎(chǔ)打字文本的內(nèi)容的墨水繪圖筆畫的定位和位置(例如,刪除注解橫跨文本單詞),語義分析器會識別并將注解分類為“刪除”注解并生成刪除節(jié)點814。另外,語義分析器會存儲所有對應(yīng)在一個或多個筆畫葉子節(jié)點816內(nèi)的刪除注解的實際墨水筆畫的所有筆畫數(shù)據(jù)(或者,作為刪除節(jié)點814或其它合適的節(jié)點內(nèi)的特性)。
如在圖7A和7B中描述的加下劃線注解的情況,如果單詞因為某個原因移動,則刪除注解可以與該單個單詞“green”維持在一起。同樣,這可能例如通過將數(shù)據(jù)保存在數(shù)據(jù)結(jié)構(gòu)810內(nèi)而完成,以指明刪除上下文節(jié)點814(在該例中的“源”上下文節(jié)點)與單詞“green”的文本單詞節(jié)點768e相關(guān)聯(lián)(該示例中的“目的地”上下文節(jié)點),如在圖8B中由箭頭818說明,并通過將數(shù)據(jù)存儲在數(shù)據(jù)結(jié)構(gòu)內(nèi)以指明文本單詞節(jié)點768e與刪除節(jié)點814相鏈接,如箭頭820指明。在該示例中的鏈接類型是“水平”跨度鏈接類型,它將刪除節(jié)點814緊扣到文本單詞節(jié)點768e。相應(yīng)地,如果因為任何原因,存儲在文本單詞上下文節(jié)點768e內(nèi)的數(shù)據(jù)指明單詞“green”(或與節(jié)點768e相關(guān)的其它單詞)的位置和/或大小在電子文檔800內(nèi)改變了,則鏈接818和820會允許應(yīng)用程序檢測到,如果可能它應(yīng)調(diào)整刪除的呈現(xiàn)和/或調(diào)整其大小(如果可能)到存儲在改變的電子文檔內(nèi)的上下文節(jié)點768e內(nèi)存儲的單詞的位置、空間位置和/或大小。同樣,可以使用任何在節(jié)點或任何合適的表示鏈接的數(shù)據(jù)間合適的鏈接安排而不偏離本發(fā)明。
圖9A和9B說明另一注解類型的示例并進一步示出與多于一個的文本單詞的相關(guān)聯(lián)或鏈接注解。在圖9A和9B說明的示例中,電子文檔900同樣包括句子“Today the sky is green,”但在該實例中,基于筆計算系統(tǒng)的用戶已經(jīng)使用電子墨水對文檔900進行夾住以圈出單詞“is green”(圈或“包含”類型注解在圖9A的參考號902內(nèi)示出)。圖9B說明一旦經(jīng)完全語義分析對應(yīng)該復合電子文檔900的示例等級數(shù)據(jù)結(jié)構(gòu)910(因為圖9B的大部分的特定上下文節(jié)點對應(yīng)圖7B的上下文節(jié)點,如圖7B相同的參考號在圖9B內(nèi)使用,且略去重復的解釋)。在該實例中,語義分析器會注意電子文檔800內(nèi)的數(shù)據(jù)相對注解902的存在,且它會將該數(shù)據(jù)分類為電子墨水繪圖(墨水繪圖節(jié)點812)。另外,基于相對于在文檔900內(nèi)的基礎(chǔ)打字文本的內(nèi)容的墨水繪圖筆畫的定位和位置,語義分析器會識別并將注解分類為“包含”注解并生成數(shù)據(jù)結(jié)構(gòu)910內(nèi)的墨水包含節(jié)點914。另外,語義分析器會存儲所有對應(yīng)在一個或多個筆畫葉子節(jié)點916內(nèi)的包含注解的實際墨水筆畫的所有筆畫數(shù)據(jù)(或者,作為刪除節(jié)點914或其它合適的節(jié)點內(nèi)的特性)。
如在圖7A和7B中描述的加下劃線注解的情況,如果單詞因為某個原因移動,則包含注解可以與該單個單詞“green”維持在一起。同樣,這可能例如通過將數(shù)據(jù)保存在數(shù)據(jù)結(jié)構(gòu)910內(nèi)而完成,以指明墨水包含上下文節(jié)點914(在該例中的“源”上下文節(jié)點)與單詞“green”的文本單詞節(jié)點768e相關(guān)聯(lián)(該示例中的“目的地”上下文節(jié)點),如在圖9B中由箭頭918a和918b說明。另外,數(shù)據(jù)可以被存儲在數(shù)據(jù)機構(gòu)910內(nèi)以指明文本單詞節(jié)點768d和768e由包含節(jié)點914相鏈接,如圖9B內(nèi)的箭頭920a和920b指明。該鏈接是“包含”類型鏈接。相應(yīng)地,如果因為任何原因,存儲在文本單詞上下文節(jié)點768d和768d內(nèi)的數(shù)據(jù)指明單詞“green”(或與這些上下文節(jié)點相關(guān)的其它單詞)的位置和/或大小在電子文檔900內(nèi)改變了,則鏈接918a、918b、920a和920b會允許應(yīng)用程序檢測到,如果可能它應(yīng)調(diào)整包含注解的呈現(xiàn)和/或調(diào)整其大小(如果可能)到存儲在改變的電子文檔內(nèi)的上下文節(jié)點768d和768e內(nèi)存儲的單詞的位置、空間位置和/或大小。另外,如果用戶在單詞“is”和“green”之間加入單詞,或如果單詞或字符以某種方式被移去或改變,應(yīng)用程序可能改變包含注解的大小和/或位置以適應(yīng)這些改變。同樣,可以使用任何在節(jié)點或任何合適的表示鏈接的數(shù)據(jù)間合適的鏈接安排而不偏離本發(fā)明。
圖10A和10B說明另一經(jīng)常使用的注解類型的示例,特別是“邊注釋”類型注解。在該例中,如圖10A說明的,用戶對包含句子“Today the sky is green,”的電子文檔1000進行注解,其電子墨水邊注解1002聲明“it’s not green!”。值得注意的是,在該實例中,如圖10B示出,與打字本本相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)1010已經(jīng)被改變,因為該文本在電子文檔1000內(nèi)為兩行(不同于圖7A、8A和9A中單行示出)。相應(yīng)地,數(shù)據(jù)結(jié)構(gòu)1010有兩個行節(jié)點1012和1014,且第一個行節(jié)點1012包括文本單詞節(jié)點768a和768b(與單詞“Today”和“the”相關(guān)聯(lián))且第二行節(jié)點1014包括文本單詞節(jié)點768c、768d和768e(與單詞“sky”、“is”和“green”相關(guān)聯(lián))。
一旦復合電子文檔1000經(jīng)完全語義分析,語義分析器會將注解1002識別為包含電子墨水文本,且它會將該注解(由于其在文檔1000的邊上的位置)分類為“邊注釋”類型注解。相應(yīng)地,語義分析器會為邊注解生成合適的上下文節(jié)點1016。由于該邊注釋1002指包含電子墨水文本,語義分析器進一步生成與電子墨水的等級結(jié)構(gòu)相關(guān)聯(lián)的段落節(jié)點1018、兩個行節(jié)點1020和1022以及合適的墨水單詞節(jié)點1024、1026、1028和筆畫節(jié)點1030、1032和1034(如前所述,可選地或或者,墨水筆畫數(shù)據(jù)可以存儲為墨水單詞節(jié)點的特性,以及/或行節(jié)點可以從數(shù)據(jù)結(jié)構(gòu)1010中略去)。
在圖10A和10B的示例中說明了不同的鏈接關(guān)系。特別是在該示例中,基于邊注解1002相對于頁邊緣和基本文檔內(nèi)容的定位和定向,語義分析器會將數(shù)據(jù)保留在數(shù)據(jù)結(jié)構(gòu)1010中,指明與邊注解1002相關(guān)聯(lián)的段落節(jié)點1018(在該示例中為“源”上下文節(jié)點)鏈接到與打字文本相關(guān)聯(lián)的段落節(jié)點764,如圖10B內(nèi)用箭頭1036說明的。另外,語義分析器會將數(shù)據(jù)保留在數(shù)據(jù)結(jié)構(gòu)1010內(nèi)以指明與打字文本相關(guān)聯(lián)的段落節(jié)點764由邊注釋1002的段落節(jié)點1018鏈接,如箭頭1038說明。這是“緊扣”類型鏈接安排,其中墨水段落緊扣到文本段落。這樣,無論打字段落在電子文檔1000內(nèi)移到何處,甚至可選地如果附加的行和/或單詞被加入段落,和/或如果在段落或電子文檔1000內(nèi)進行改變,鏈接1036和1038會允許應(yīng)用程序檢測如果可能它應(yīng)該移動邊注解1002以保持在相鏈接的打字段落相鄰的邊內(nèi)。當然,可以存儲其它鏈接安排或與鏈接相關(guān)聯(lián)的數(shù)據(jù)而不偏離本發(fā)明。例如,邊注解節(jié)點1016可能被鏈接到打字段落的一個或多個單個文本單詞節(jié)點,諸如第一文本單詞節(jié)點768a。
圖11A和11B是根據(jù)本發(fā)明的至少一些示例,比較復雜的由系統(tǒng)和方法識別的注解的示例。在說明的示例中,電子文檔1100同樣包括句子“Today thesky is green,”,但在該實例中,用戶使用不同的注解類型的組合對電子文檔1100進行注解。尤其是,用戶已經(jīng)在單詞“green”上打圈畫出包含類型注解1102,包含電子墨水單詞“blue!”,以及連接符類型注解1106(例如在該示例中的箭頭)從包含類型注解1102指向邊注釋注解1104。
由于各個注解類型相對于基本文檔、打字文檔文本和文檔的邊緣的相對位置和空間定向,根據(jù)本發(fā)明的至少一些示例的語義分析器系統(tǒng)會識別多種注解類型、其內(nèi)容以及相互間的關(guān)系以及與打字的電子文檔的關(guān)系,如上所述。圖11B示出由語義分析器生成的電子文檔1100的等級數(shù)據(jù)結(jié)構(gòu)1110。由于打字文本的等級結(jié)構(gòu)與圖7B內(nèi)描述的相同,所以對圖11B的結(jié)果使用相同的參考號,略去詳細描述。而且,如在圖11B內(nèi)說明的,墨水包含類型注解1102的節(jié)點鏈1112類似于圖9B說明的,且邊注釋類型注解1104的節(jié)點鏈1114類似于圖10B內(nèi)說明的。相應(yīng)地,不包括這些節(jié)點鏈的詳細描述。
為了維持注解與基礎(chǔ)文本的合適部分和空間位置的空間位置,由語義分析器提供在注解節(jié)點間的多個鏈接以及合適的文本節(jié)點并將其存儲在數(shù)據(jù)結(jié)構(gòu)1110內(nèi)。在說明的示例中,墨水包含節(jié)點1116(在此為“源”上下文節(jié)點)鏈接到它包含的單詞的文本單詞節(jié)點768e(例如在該示例中為對應(yīng)單詞“green”的“目的地”節(jié)點),如圖11B內(nèi)用箭頭1118說明的。類似地,數(shù)據(jù)被存儲在數(shù)據(jù)結(jié)構(gòu)1110內(nèi),指明文本數(shù)據(jù)節(jié)點768e由墨水包含節(jié)點1116鏈接,如圖11B內(nèi)由箭頭1120指明。這是“包含”類型鏈接安排。
如上所注,根據(jù)本發(fā)明的該示例的語義分析器進一步識別電子文檔1000包括對應(yīng)墨水連接符的墨水繪圖1106(即在該示例中包含注解1102和邊注釋注解1104間的箭頭)。該連接符注解1106作為墨水繪圖被存儲在數(shù)據(jù)結(jié)構(gòu)1110內(nèi)(由墨水繪圖節(jié)點1122表示),這包含指明注解類型的節(jié)點(在該示例中,墨水連接符節(jié)點1124),這還進一步包括數(shù)據(jù),指明筆畫或組成連接符的筆畫(例如在筆畫節(jié)點1126內(nèi)或在與墨水連接符節(jié)點1124(或其它合適節(jié)點)相關(guān)聯(lián)的特性內(nèi))。另外,信息被存儲在數(shù)據(jù)結(jié)構(gòu)1110內(nèi),以指明墨水連接符節(jié)點1124(在該示例中為“目的地”節(jié)點)指自墨水包含節(jié)點1116(在該示例中“源”節(jié)點)。該鏈接(“指自”類型鏈接)在圖11B內(nèi)用箭頭1128表示。另外,數(shù)據(jù)結(jié)構(gòu)1110進一步包括指明墨水連接符節(jié)點1124的數(shù)據(jù)(在示例中“源”上下文節(jié)點)鏈接到墨水單詞節(jié)點1132(在該示例中“目的地”上下文節(jié)點)。鏈接(“指向”類型鏈接)在圖11B內(nèi)用箭頭1134表示?;蛘?,墨水鏈接節(jié)點1124可以與節(jié)點鏈1114的墨水行節(jié)點、墨水段落節(jié)點或邊注釋節(jié)點的任何一個相鏈接,而不偏離本發(fā)明。用上述的特定鏈接,數(shù)據(jù)結(jié)構(gòu)1110指明墨水連接符1106指自圈繪圖1102并指向墨水單詞,如圖11A說明。這些各種鏈接允許應(yīng)用程序檢測基本文檔和多個注解分量間的相關(guān)聯(lián)。然后,如果可能,應(yīng)用程序可以將注解元素移動以合適地對應(yīng)基礎(chǔ)文檔內(nèi)的移動??梢允褂萌魏魏线m的鏈接安排或與鏈接相關(guān)聯(lián)的數(shù)據(jù)而不偏離本發(fā)明。
圖12A和12B說明另一經(jīng)常使用的注解特征的示例。在該示例中,如在圖12A內(nèi)說明的電子文檔1200同樣包含句子“Today the sky is green”,但在該實例中,基于筆計算系統(tǒng)的用戶使用電子墨水對文檔1200進行注解以將一星號置于接近句子的第一單詞處(注解在參考號1202處示出)。圖12B說明一旦經(jīng)語義分析對應(yīng)該復合電子文檔1200的示例等級數(shù)據(jù)結(jié)構(gòu)1210(因為圖12B的大部分的特定上下文節(jié)點對應(yīng)圖7B的上下文節(jié)點,如圖7B相同的參考號在圖12B內(nèi)使用,且略去重復的解釋)。在該實例中,語義分析器會注意與注解相關(guān)的電子墨水數(shù)據(jù)存在,且它會將該數(shù)據(jù)分類為電子墨水繪圖(墨水繪圖節(jié)點1212)。另外,基于相對于在文檔1200內(nèi)的基礎(chǔ)打字文本的內(nèi)容的墨水繪圖筆畫的定位和位置(例如,在打字文本的行的一邊),語義分析器會識別并將注解分類為“星號”、“墨水”或錨類型注解并生成星號節(jié)點1214。另外,語義分析器會存儲所有對應(yīng)在一個或多個筆畫葉子節(jié)點1216(或其它節(jié)點)內(nèi)或在星號節(jié)點的特性(或一些其它節(jié)點)的星號注解的實際墨水筆畫的所有筆畫數(shù)據(jù)。
在該示例中,如果打字文本因為某個原因移動,則星號類型注解可以與出現(xiàn)在電子文檔1200內(nèi)的無論哪里的該行的整個打字文本維持在一起。這可能例如通過將數(shù)據(jù)保存在數(shù)據(jù)結(jié)構(gòu)1210內(nèi)而完成,以指明星號上下文節(jié)點1214(在該例中的“源”上下文節(jié)點)與文本行節(jié)點766相關(guān)聯(lián)(該示例中的“目的地”上下文節(jié)點),如在圖12B中由箭頭1218說明,并通過將數(shù)據(jù)以指明文本行節(jié)點766與星號節(jié)點1214相鏈接,如箭頭1220指明。相應(yīng)地,如果因為任何原因,存儲在文本行上下文節(jié)點766內(nèi)的數(shù)據(jù)指明行的位置和/或大小在電子文檔1200內(nèi)改變了,則鏈接1218和1220會允許應(yīng)用程序檢測到,如果可能它應(yīng)調(diào)整星號的呈現(xiàn)調(diào)整到與存儲在改變的電子文檔內(nèi)的上下文節(jié)點766相關(guān)聯(lián)的數(shù)據(jù)的呈現(xiàn)對應(yīng)的位置、空間位置。同樣,可以使用任何在節(jié)點或任何合適的表示鏈接的數(shù)據(jù)間合適的鏈接安排而不偏離本發(fā)明?;蛘?,如果需要,語義分析器會將星號節(jié)點1214(或其它與星號注解相關(guān)聯(lián)的合適節(jié)點)捆綁到段落節(jié)點764或一個單個單詞節(jié)點(例如單詞節(jié)點768a)而不偏離本發(fā)明。而且如果需要,墨水繪圖節(jié)點1212可以是緊扣到行節(jié)點766的源節(jié)點(或在該示例中其它對應(yīng)打字文字的合適節(jié)點)。可以使用任何合適的鏈接安排或表示鏈接的數(shù)據(jù)而不偏離本發(fā)明。
借助圖13A和13B內(nèi)說明了鏈接的注解的“流程圖”類型。在該示例中,電子文檔1300包括流程圖,它可選地作為在整個較大電子文檔內(nèi)的注解的部分而被包括。如在圖13A內(nèi)說明,注解或流程圖包括打圈的或為第一包含注解1304圍起的第一墨水項1302(在該例中為字母“A”)以及由第二包含注解1308打圈或圍起的第二墨水項1306。另外,連接符注解1310(在該示例中為箭頭)從第一包含注解1304擴展到第二包含注解1308。然而應(yīng)理解,文檔元素間的關(guān)系可以以不同于鏈接的形式表示。例如,這些關(guān)系可以通過例如使用包含相關(guān)聯(lián)的文檔元素的包含節(jié)點而用數(shù)據(jù)樹本身的結(jié)構(gòu)表示。
圖13B說明一示例數(shù)據(jù)結(jié)構(gòu)1320,一旦完全經(jīng)語義分析,它可以與圖13A內(nèi)的電子文檔1300的流程圖注解相關(guān)聯(lián)。在該示例數(shù)據(jù)結(jié)構(gòu)1320中,可能對應(yīng)電子文檔1300的所有或部分的根節(jié)點1322作為在流程圖類型注解內(nèi)的節(jié)點的父節(jié)點而提供。與特定注解結(jié)構(gòu)相關(guān)的第一上下文節(jié)點是對應(yīng)墨水包含1304的墨水繪圖節(jié)點1324。墨水包含節(jié)點1326作為子節(jié)點提供給墨水繪圖節(jié)點1324,且與墨水包含注解1304相關(guān)聯(lián)的特定筆畫被存儲在葉子節(jié)點1328內(nèi),或作為墨水包含節(jié)點1326(或其它節(jié)點)的特性。
如上關(guān)于圖13A所述,注解進一步包括對應(yīng)字母“A”1302的電子墨水文本。由于與其它上述的電子墨水相同,與該墨水文本相關(guān)聯(lián)的電子墨水存儲在等級數(shù)據(jù)結(jié)構(gòu)1320內(nèi)作為段落節(jié)點1330,它包含行節(jié)點1332,行節(jié)點1332包含墨水單詞節(jié)點1334,節(jié)點1334可選地包含一個或多個葉子節(jié)點1336,葉子節(jié)點對應(yīng)在墨水文本注解或包含筆畫數(shù)據(jù)的特性內(nèi)的單個筆畫。存儲在數(shù)據(jù)結(jié)構(gòu)1320內(nèi)的信息指明包含注解1304的墨水包含節(jié)點1326(“源”節(jié)點)鏈接到字母“A”的段落節(jié)點1330(“目的地”節(jié)點),如圖13B中箭頭13B說明?;蛘撸绻枰?,墨水單詞節(jié)點1334或行節(jié)點1332會作為目的地節(jié)點。另外,存儲在數(shù)據(jù)結(jié)構(gòu)1320內(nèi)的信息還指明段落節(jié)點1330為墨水包含節(jié)點1326鏈接,如在圖13B內(nèi)用箭頭1340表示。由于墨水包含1308的數(shù)據(jù)結(jié)構(gòu)和該示例中的注解的字母“B”1306共享與墨水包含1304和字母“A”1302相同的同一一般結(jié)構(gòu),但在圖13B內(nèi)的墨水包含1308和墨水單詞1306后有字母“b”。當然,多種等級安排和鏈接結(jié)構(gòu)或鏈接數(shù)據(jù)不同于上述特別描述的,而不偏離本發(fā)明。
注解還包括連接符注解1310,在數(shù)據(jù)結(jié)構(gòu)1320內(nèi)用墨水繪圖節(jié)點1342表示。如上與圖11B一起描述,表示墨水連接符注解的墨水附圖的數(shù)據(jù)結(jié)構(gòu)還可能包括墨水連接符節(jié)點1344,這可能進一步包括一個或多個特性或葉子節(jié)點1346,這包括與組成連接符1310的特定筆畫相關(guān)聯(lián)的數(shù)據(jù)。為了完成該示例的注解數(shù)據(jù)結(jié)構(gòu),與墨水連接符注解1310(源節(jié)點)相關(guān)聯(lián)的數(shù)據(jù)鏈接到與兩個包含注解1304和1308(目的地節(jié)點)相關(guān)聯(lián)的數(shù)據(jù)。特別是,如圖13B的示例示出,信息存儲在數(shù)據(jù)結(jié)構(gòu)1320內(nèi)以指明墨水包含節(jié)點1326鏈接到墨水連接符節(jié)點1344(用箭頭1348表示)作為“指自”注解類型。另外,信息被存儲在數(shù)據(jù)結(jié)構(gòu)1320內(nèi)以指明墨水連接符節(jié)點1344鏈接到墨水包含節(jié)點1326b(用箭頭1352表示)作為“指向”注解類型。這樣存儲的與鏈接相關(guān)的數(shù)據(jù)指明連接符1310從圈包含1304指向圈包含1308,如圖13A內(nèi)說明的。因此,存在多個鏈接會使得電子文檔1300內(nèi)的注解的一部分接著注解的另一部分,因此使得注解不受影響,即使電子文檔1300在某些方面改變。當然,這整個結(jié)構(gòu)還可以鏈接到一些如上所述的基礎(chǔ)文檔元素,而不偏離本發(fā)明。
類似地,注解可能涉及與寫入注釋一起的兩個由連接符相連的閉圈(encloser),諸如例如“switch these!”。如果移動注解的一部分,可能需要獨立地移動注解的其它部分,諸如當單詞在兩個閉圈之間插入。表示電子墨水注解的上下文節(jié)點和表示非墨水內(nèi)容的節(jié)點間的鏈接可以為應(yīng)用程序用于重新定位注解的部分,并當完成定位操作時將其捆綁在一起。
圖14A和14B說明帶有流程圖類型注解或墨水結(jié)構(gòu)的電子文檔1400的另一示例。在該示例中,字母“A”的電子墨水注解1402連到字母“B”1404和“C”1406的電子墨水注解,以及相應(yīng)地在字母“A”、“B”間和“A”和“C”間的電子墨水連接符1408和1410。
圖14B內(nèi)說明了在語義分析后電子文檔1400的示例數(shù)據(jù)結(jié)構(gòu)1420。與整個電子文檔或其一些部分相關(guān)的數(shù)據(jù)可以存儲在父根節(jié)點1422內(nèi)。對應(yīng)電子墨水單詞“A”、“B”和“C”的數(shù)據(jù)有相同的段落節(jié)點(1424a、1424b、1424c)、行節(jié)點(1426a、1426b、1426c)、墨水單詞節(jié)點(1428a、1428b、1428c)和筆畫節(jié)點(1430a、1430b、1430c)結(jié)構(gòu),如在以上的幾張附圖內(nèi)使用的。省略這些節(jié)點的重復描述。類似地,墨水連接符有在以上圖11B和13B中使用的墨水繪圖節(jié)點(1432a、1432b)、墨水包含節(jié)點1434a、1434b)以及筆畫節(jié)點(1436a、1436b)結(jié)構(gòu),所以省略重復描述。當然,可以使用這些特定數(shù)據(jù)結(jié)構(gòu)的變體,包括上述的可能變體,而不偏離本發(fā)明地被使用。
為了完成該示例的注解數(shù)據(jù)結(jié)構(gòu),與墨水連接符注解1408相關(guān)聯(lián)的數(shù)據(jù)鏈接到與它連接的兩個墨水單詞注解1402和1404相關(guān)聯(lián)的數(shù)據(jù),且與墨水連接符注解1410相關(guān)聯(lián)的數(shù)據(jù)鏈接到與它連接的兩個墨水單詞注解1402和1406相關(guān)聯(lián)的數(shù)據(jù)。尤其是,如在圖14B的示例中示出,信息存儲在數(shù)據(jù)結(jié)構(gòu)1420內(nèi)以指明墨水附圖節(jié)點1432a(“源”節(jié)點)“指向”墨水單詞節(jié)點1428a和1428b(如相應(yīng)地由箭頭1438和1440表示)。類似地,信息被存儲在數(shù)據(jù)結(jié)構(gòu)1420內(nèi)以指明墨水繪圖節(jié)點1432b(“源”節(jié)點)“指向”墨水單詞節(jié)點1428a和1428c(如相應(yīng)地由箭頭1442和1444表示)。墨水單詞節(jié)點1428a、1428b和1428c作為“目的地”節(jié)點。由于多個鏈接,電子文檔1400內(nèi)的注解一部分的移動跟隨著注解的另一部分,從而使得注解不受影響或被鏈接,即使電子文檔1400以某些方式改變。而且,該注解可以與電子文檔內(nèi)的一個或多個其它元素鏈接,諸如打字文本、繪圖、圖像等,而不偏離本發(fā)明。
圖15A到15C說明電子文檔1500和示例數(shù)據(jù)結(jié)構(gòu)的示例,這包括以帶有多行和多列的表格形式的電子墨水注解。特別是,如在圖15A的示例中說明的,電子文檔1500包括帶有兩行和兩列的表格1502(構(gòu)成四個單元格),且表格的每個單元格由電子墨水2的邊線組成并包含電子墨水文本輸入。
在圖15A內(nèi)說明電子墨水表格1502內(nèi)的示例數(shù)據(jù)結(jié)構(gòu)1510,在經(jīng)完整語義分析后,在圖15B內(nèi)示出。在該示例中,數(shù)據(jù)結(jié)構(gòu)1510包括根節(jié)點1512,這可以對應(yīng)電子文檔1500的所有或部分。在根節(jié)點1512下,與表格相關(guān)的數(shù)據(jù)存儲在表格節(jié)點1514內(nèi)。這可以包括例如指明表格大小、表格位置、行數(shù)、列數(shù)、邊框大小等的數(shù)據(jù)。在表格節(jié)點1514下,為表格的每行提供分開的行節(jié)點(在該示例中,如在圖15B內(nèi)說明的,提供兩個行節(jié)點1516和1518)。該示例數(shù)據(jù)結(jié)構(gòu)的每個行節(jié)點進一步包括一個或多個單元格節(jié)點(在說明的示例中,行節(jié)點1516包括兩個單元格節(jié)點1520和1522,而行節(jié)點1518包括兩個單元格節(jié)點1524和1526)。由于該示例的每個單元格包含電子墨水文本數(shù)據(jù),該示例等級數(shù)據(jù)結(jié)構(gòu)1510的剩余由類似的上述的段落節(jié)點、行節(jié)點、墨水單詞節(jié)點和筆畫節(jié)點。當然,表格單元格可以包含一個或多個除了和/或以上關(guān)于圖6I詳細描述的各種數(shù)據(jù)類型的其它類型數(shù)據(jù),而不偏離本發(fā)明。作為另一示例,不包含行節(jié)點1516和1518,數(shù)據(jù)結(jié)構(gòu)可以包含列節(jié)點,這可以包括單元格節(jié)點、段落節(jié)點等,如圖15B示出。組成實際表格的墨水筆畫可以例如存儲為表格節(jié)點1514的一部分(例如如與該節(jié)點相關(guān)聯(lián)的特性)、存儲為取決于表格節(jié)點1514(此下存儲著相關(guān)聯(lián)的筆畫)的墨水繪圖節(jié)點和/或在數(shù)據(jù)結(jié)構(gòu)1510內(nèi)的任何其它合適位置。
在圖15C內(nèi)示出了包括表格1502的電子文檔1500的另一示例數(shù)據(jù)結(jié)構(gòu)1530。在該示例中,根節(jié)點1512、表格節(jié)點1514、行節(jié)點1516和1518以及單元格節(jié)點1520、1522、1524和1526與在圖15B中說明的那些相同。然而,不是將電子墨水文本數(shù)據(jù)作為子節(jié)點包括在多個單元格節(jié)點1520、1522、1524和1526中,電子墨水文本數(shù)據(jù)的段落節(jié)點1528a、1528b、1528c、1528d(或任何其它合適或需要的數(shù)據(jù)結(jié)構(gòu))鏈接到其相應(yīng)的單元格節(jié)點1520、1522、1524和1526,如圖15C中用箭頭1530a、1530b、1530c和1530d相應(yīng)示出。在該示例中的單元格節(jié)點對于包含在其中的墨水單詞可以作為包含類型“源”節(jié)點,且墨水段落、行或單詞節(jié)點作為“目的”上下文節(jié)點。由于多個鏈接,電子文檔1500內(nèi)的表格注解的一個部分的移動后接著注解的另一部分,從而保持表格注解不受影響或經(jīng)鏈接,即使電子文檔1500以某些方式改變。而且,部分基于基本電子文檔,表格還可以鏈接到一些其它存在的節(jié)點。同樣,或者,行節(jié)點1516和1518可以用包含多個單元格的列節(jié)點替換,而不偏離本發(fā)明。而且,組成實際表格的墨水筆畫可以存儲在任何位置而不偏離本發(fā)明,例如作為表格節(jié)點1514的一部分(例如作為與該節(jié)點相關(guān)聯(lián)的特性)、作為取決于表格節(jié)點1514的墨水附圖節(jié)點(帶有其下存儲的相關(guān)聯(lián)筆畫)和/或在數(shù)據(jù)結(jié)構(gòu)1510內(nèi)任何其它合適的位置。
當然,與上述各個示例注解類型相關(guān)的各個附圖僅是描述可能的注解類型、注解的使用以及可以包含在注解內(nèi)的信息的示例。領(lǐng)域內(nèi)的技術(shù)人員可以意識到可以對此進行多種修改和改變,而不偏離本發(fā)明。例如,注解可以包含許多不同類型的數(shù)據(jù)(諸如電子墨水文本、繪圖、圖像、打字文字和圖像等),以及其組合和排列而不偏離本發(fā)明。
另外,多種鏈接方案與多種上述的數(shù)據(jù)結(jié)構(gòu)一起描述。該種鏈接方案或技術(shù)只是多種數(shù)據(jù)節(jié)點可以被鏈接在一起的方式的示例。任何合適的鏈接安排會與鏈接相關(guān)的數(shù)據(jù)可以被存儲而不偏離本發(fā)明。例如,可能用單個標識符表示每個節(jié)點(諸如“全局唯一標識符”即GUID)以及使用GUID對(或更多)表示鏈接。作為另一方法,單個的鏈接可能被用于鏈接節(jié)點,而不是一些上述示例描述的雙鏈接安排。作為另一可能,如果需要或期望,節(jié)點可以與自己鏈接(自鏈接,例如即源節(jié)點與目的地節(jié)點是同一節(jié)點)。領(lǐng)域內(nèi)的技術(shù)人員可以意識到可以使用任何合適的將多個數(shù)據(jù)集合相互間相鏈接或相關(guān)聯(lián),不偏離本發(fā)明。
墨水分析現(xiàn)在根據(jù)說明本發(fā)明的示例描述在電子文檔內(nèi)用于分析電子墨水的多種示例技術(shù)。特別是,圖16A到16E說明根據(jù)本發(fā)明的多個示例分析文檔步驟的流程圖。圖17到26說明在分析過程中使用的不同組件間的關(guān)系。
回到圖17,該
應(yīng)用程序1701。應(yīng)用程序1702維持文檔1703,該文檔可以包含電子墨水數(shù)據(jù)1705和非墨水數(shù)據(jù)1707,諸如打字字符或圖像。如上詳述,電子墨水數(shù)據(jù)1705和非墨水數(shù)據(jù)1707的特性可以由等級數(shù)據(jù)結(jié)構(gòu)描述,諸如樹。為了開始電子墨水的分析,在步驟1601,應(yīng)用程序1701建立一種數(shù)據(jù)結(jié)構(gòu),在圖1709內(nèi)被標識為分析上下文對象1709。
圖18說明類型的的示例樹1801,該樹可能被包括在分析上下文對象1709。樹1801包括根節(jié)點1803以及段落節(jié)點1805。段落節(jié)點1805對應(yīng)電子墨水文本的段落,例如,這可能從早先的分析過程中先前經(jīng)標識。段落節(jié)點1805連到兩個行節(jié)點1807和1809,這兩個節(jié)點表示電子墨水文本的段落內(nèi)的兩行。行節(jié)點1807與兩個單詞節(jié)點1811和1813相關(guān)聯(lián)。每個單詞節(jié)點1811和1813對應(yīng)由行節(jié)點1807表示的電子墨水文本的行內(nèi)的單詞。單詞節(jié)點1811包含墨水筆畫數(shù)據(jù)1815以及墨水筆畫數(shù)據(jù)1817。因此,筆畫數(shù)據(jù)1815和1817對應(yīng)組成單詞節(jié)點1811表示的單詞的文本電子墨水筆畫。類似地,單詞節(jié)點1813包含墨水筆畫數(shù)據(jù)1819和墨水筆畫數(shù)據(jù)1821,這對應(yīng)組成組成單詞節(jié)點1813表示的單詞的文本電子墨水筆畫。墨水1823-1827表示新的墨水筆畫,這些筆畫未經(jīng)分類或與其它墨水筆畫或其它文檔元素相關(guān)聯(lián)。
因此,不是存儲在單個筆畫節(jié)點內(nèi)的筆畫,多個節(jié)點可以由相關(guān)的“筆畫”特性,它存儲對應(yīng)與節(jié)點相關(guān)聯(lián)的筆畫的數(shù)據(jù)。例如(a)未經(jīng)分類的上下文節(jié)點可以包含一個或多個“筆畫”特性,這些特性帶有一個或多個需要經(jīng)分析的筆畫;(b)墨水單詞節(jié)點可以包含一個或多個“筆畫”特性,這些特性包含一個或多個組成墨水單詞的筆畫;(c)繪圖節(jié)點可以包含一個或多個“筆畫”特性,這些特性包含組成附圖的一個或多個筆畫;以及(d)墨點節(jié)點可以包含一個或多個“筆畫”特性,這些特性包含一個或多個組成列表項內(nèi)的墨點的筆畫。當然,用本發(fā)明的其它實現(xiàn),單個筆畫節(jié)點可以用于數(shù)據(jù)樹以表示電子墨水的單個筆畫,而不是將墨水筆畫與諸如單詞節(jié)點或繪圖節(jié)點相關(guān)聯(lián)。
雖然圖18內(nèi)示出的樹1801包括墨水筆畫,它們已被組織成單詞、行和段落,可以理解樹1801可以只包含還未經(jīng)分類或還未與其它墨水筆畫或文檔元素相關(guān)聯(lián)的新墨水筆畫。例如,當用戶開始在文檔1705內(nèi)輸入電子墨水,這些開始的墨水筆畫還未經(jīng)分析。還可以理解,樹1801只是用于表示的,且它是過度簡化的,用于簡化對本發(fā)明的各個方面的理解。例如,行節(jié)點一般會與多個單詞節(jié)點相關(guān)聯(lián),且每個單詞節(jié)點可以包含幾個墨水筆畫的筆畫數(shù)據(jù)。還可以理解雖然樹1801只包括與墨水相關(guān)的節(jié)點,分析上下文對象1709可以包括表示非墨水文檔元素的節(jié)點,諸如圖像和打字文本,如上詳述。
回到圖17,本發(fā)明的一些示例內(nèi),應(yīng)用程序1701會建立并維持其自己的分析上下文對象1709。對這些應(yīng)用程序1701,應(yīng)用程序1701可以簡單地提供到分析對象1709的參考。對這些應(yīng)用程序1701,然而應(yīng)用程序1701必須包含建立、填充和維持分析對象必須的機制。然而一些軟件開發(fā)商不希望有提供給應(yīng)用程序1701這些機制的麻煩。
相應(yīng)地,然而在發(fā)明的其它示例內(nèi),應(yīng)用程序1701可以實例化另一對象以建立分析上下文對象1709。例如,應(yīng)用程序1701可以使用墨水分析工具或其它對象以建立和/或維持分析上下文對象1709。例如,應(yīng)用程序1701可以標識或提供未經(jīng)分析的墨水數(shù)據(jù)給墨水分析工具。取決于來自應(yīng)用程序1701的指令,墨水分析工具可以然后建立表示整個文檔1703的分析上下文對象1709,或另外指示包含應(yīng)用程序1701標識的未經(jīng)分析的墨水的文檔的特定區(qū)域(或區(qū)域)。在一些應(yīng)用程序1701內(nèi),應(yīng)用程序1701可以之后維持并更新分析上下文對象1709,或者通過本身或者使用由墨水分析工具或另一對象提供的服務(wù)。在其它應(yīng)用程序1701內(nèi),應(yīng)用程序1701可能不維持分析文檔對象1709,而是由墨水分析工具或其它對象在必要時建立新的分析文檔對象1709。
一般,分析上下文對象1709會包含整個文檔1703的文檔元素上的信息。然而還值得注意的是,分析上下文對象1709可以包含在文檔1703只有一部分內(nèi)的文檔元素的信息。即分析上下文對象1709可以只表示文檔的空間區(qū)域內(nèi)的文檔元素,該文檔包含新或“臟”的墨水或其它數(shù)據(jù)。如果包括電子墨水的文檔區(qū)域內(nèi)的所有文檔元素已經(jīng)經(jīng)分析,則這些先前經(jīng)分析的文檔元素可能不包括在分析上下文對象1709內(nèi)。或者,應(yīng)用程序可以為每頁維持分開的分析上下文對象1709,或其它與整個電子文檔1703相關(guān)的數(shù)據(jù)的子集。
一旦應(yīng)用程序1701已經(jīng)建立分析上下文對象1709,在步驟1603內(nèi),墨水分析工具1901復制分析上下文對象1709的至少一部分,如圖19示出。更特定地是,如果分析上下文對象1709不限于包含新墨水和/或其它數(shù)據(jù)的區(qū)域,如上所述,則應(yīng)用程序1701會指定文檔1703包含新墨水的區(qū)域和/或其它數(shù)據(jù)應(yīng)被分析。應(yīng)用程序1701然后調(diào)用墨水分析工具1901以復制對應(yīng)于文檔1703指定區(qū)域的分析上下文對象1709。(當然,如果分析上下文對象1709已經(jīng)被限于描述包含新墨水的區(qū)域,則墨水分析工具1901可以復制整個分析上下文對象1709)。
雖然應(yīng)用程序1701會知道哪些墨水先前未經(jīng)分析,它可能不知道其電子文檔1703的哪個部分(例如先前分析的墨水、文檔結(jié)構(gòu)內(nèi)的基礎(chǔ)數(shù)據(jù)等)影響新墨水(因此,哪個部分以送到墨水分析工具1901)。因此,在本發(fā)明的至少一些示例內(nèi),應(yīng)用程序1701會通過分析上下文對象1709使得電子文檔1703為墨水分析工具1901可用。應(yīng)用程序1701留給墨水分析工具1901確定通過分析上下文對象1709來自應(yīng)用程序1701實際需要的信息。
根據(jù)對分析新數(shù)據(jù)的調(diào)用,墨水分析工具1901對分析上下文對象1709進行多次呼叫,如果需要的話以從分析上下文對象1709獲取信息,該信息在分析由應(yīng)用程序1701指定的區(qū)域內(nèi)的新墨水和/或其它數(shù)據(jù)時需要。例如,除了新墨水和/或其它數(shù)據(jù),墨水分析工具1901可以查詢分析上下文對象1709,以獲得關(guān)于已經(jīng)分析的指定區(qū)域內(nèi)的墨水和/或數(shù)據(jù)相關(guān)的信息,或獲得關(guān)于指定區(qū)域內(nèi)的非墨水文檔元素的信息?!爸付▍^(qū)域”在本發(fā)明的至少一些示例中對應(yīng)空間區(qū)域內(nèi)的數(shù)據(jù)和/或包含要分析的新墨水或其它數(shù)據(jù)的區(qū)域附近的數(shù)據(jù)。
先前分析的墨水和非墨水文檔元素,特別是位于要分析的新輸入數(shù)據(jù)附近的那些元素,可以提供能改善未經(jīng)分析的墨水或其它數(shù)據(jù)的分析的上下文。由于墨水分析工具1901獲得來自分析上下文對象1709期望的信息,墨水分析工具1901用獲得的信息建立獨立于文檔的分析上下文對象1903。因此,獨立于文檔的分析上下文對象1903至少獲得包含在分析上下文對象1709內(nèi)的信息的子集。基于上述的空間抽象方法在查詢內(nèi)使用該“調(diào)用”技術(shù)使得墨水分析工具1901有效地獲得并分析必須的數(shù)據(jù),甚至為較大的文檔。然而值得注意的是,應(yīng)用程序1901認可以簡單地通過在被請求時不將內(nèi)容透露給分析工具而限制獨立于文檔的分析上下文對象1903內(nèi)的內(nèi)容。
還值得注意的是,雖然墨水分析工具1901建立獨立于文檔的分析上下文對象1903,軟件應(yīng)用程序1701不應(yīng)改變分析上下文對象1709(且它不允許在該時段內(nèi)應(yīng)用程序內(nèi)的其它線程和/或其它程序改變分析上下文對象1709)。即軟件應(yīng)用程序1701不應(yīng)在該時段內(nèi)向文檔1703輸入新的數(shù)據(jù),且不應(yīng)允許其它線程和/或應(yīng)用程序這樣作。建立獨立于文檔的分析上下文對象1903的過程相對較快,然而一般它不會很嚴重地影響軟件應(yīng)用程序1701的操作。然而如果需要,到文檔1703的數(shù)據(jù)輸入可以經(jīng)緩沖,且在建立了獨立于文檔的分析上下文對象1903后被輸入系統(tǒng)。
一旦獨立于文檔的分析上下文對象1903經(jīng)建立,可以在獨立于文檔的分析上下文對象1903上而不是分析對象1709上實現(xiàn)所有相繼的對未經(jīng)分析的墨水和/或數(shù)據(jù)的分析,使得軟件應(yīng)用程序1701能繼續(xù)其正常的操作而不被未經(jīng)分析的墨水和/或其它數(shù)據(jù)的分析延時或停止。軟件應(yīng)用程序1701可能甚至向文檔1703輸入新的電子墨水數(shù)據(jù)1705(并輸入到分析上下文對象1709)而不干涉對獨立于文檔分析上下文對象1903的未經(jīng)分析的墨水的分析。
相應(yīng)地,在獨立于文檔的分析上下文對象1903已被建立后,在步驟1605內(nèi),墨水分析工具1901建立分開的分析線程以分析獨立于文檔的分析上下文對象1903內(nèi)的墨水。相應(yīng)地,在步驟1607,軟件應(yīng)用程序1701可以繼續(xù)注處理線程的控制,且繼續(xù)其正常操作。然后在步驟1609,墨水分析工具1901將獨立于文檔的分析上下文對象1903提供給第一分析過程以進行分析。例如,如圖20示出,墨水分析工具1901可以將獨立于文檔的分析上下文對象1903傳遞到語義分析過程2001以使用分析線程進行語義分析。語義分析過程另外可能包括一個或多個分類過程而不偏離本發(fā)明(例如用于將墨水和/或其它數(shù)據(jù)分類為多個不同類型,諸如墨水文本、墨水附圖、表格、圖表、圖形、圖像、音樂、數(shù)學、包含特定符號的繪圖(諸如帶有電阻、電容等的電器圖)等)。值得注意的是,在本發(fā)明的一些示例中,墨水分析工具1901可以對獨立于文檔的分析上下文對象1903進行復制。如在以下將詳述的,獨立于文檔的分析上下文對象1903的原始形式的副本可以用于使得分析過程的分析結(jié)果與文檔1703的當前狀態(tài)相符和。
在第一分析過程已經(jīng)分析獨立于文檔的分析上下文對象1903內(nèi)的墨水和/或其它數(shù)據(jù)后,第一分析過程將分析結(jié)果返回到墨水分析工具1901,它接著在步驟1611通知軟件應(yīng)用程序分析結(jié)果。例如,如圖21示出,如果第一分析過程是語義分析過程2001,則語義分析過程將語義分析結(jié)果2101返回到墨水分析工具1901,它然后將對分析結(jié)果2101的參考傳遞到軟件應(yīng)用程序1701(例如通過引發(fā)事件)。
如在以下將用本發(fā)明的一些示例詳細解釋的,分析結(jié)果2101可以是原始送到分析過程的獨立于文檔的分析上下文對象1903,但經(jīng)修改以包括第一分析過程生成的新信息(例如在該示例中的語義分析結(jié)果)。然而在本發(fā)明的一些其它示例中,分析結(jié)果2101可能是獨立于文檔的分析上下文對象1903的經(jīng)修改副本。通過將第一分析過程生成的新信息包括在獨立于文檔的分析上下文對象1903的副本內(nèi),原始獨立于文檔的分析上下文對象1903可以被保留例如為先前提到的協(xié)調(diào)器和/或其它分析過程使用。
圖22說明語義分析過程諸如語義分析過程2001如何能修改數(shù)據(jù)樹1801以示出語義分析操作生成的布局改變。如在該附圖中所示,語義分析過程2001已經(jīng)確定由筆畫數(shù)據(jù)1823表示的未經(jīng)分析的墨水筆畫是由單詞節(jié)點1813表示的單詞的部分。相應(yīng)地,語義分析已經(jīng)將筆畫數(shù)據(jù)1823與根節(jié)點1803解相關(guān)聯(lián)了,而將其與單詞節(jié)點1813相關(guān)聯(lián)。
語義分析過程還確定由未經(jīng)分類的筆畫數(shù)據(jù)1825和1827表示的墨水筆畫是由先前未經(jīng)標識的行節(jié)點1809表示的行內(nèi)的新單詞的一部分。相應(yīng)地,語義分析過程2001已經(jīng)建立了新單詞節(jié)點2201,且將該單詞節(jié)點2201與行節(jié)點1809相關(guān)聯(lián)。因此,語義分析結(jié)果2101描述先前未經(jīng)分析的墨水筆畫和由語義分析過程2001表示的其它墨水筆畫(或其它文檔元素)間的關(guān)系。而且,除了示出由語義分析過程2001確定的關(guān)系改變,語義分析結(jié)果2101還可以包括由語義分析過程2001確定的分類信息。例如,每個墨水筆畫數(shù)據(jù)1823-1827的實例可以經(jīng)修改以將其對應(yīng)的墨水筆畫分類為文本墨水筆畫而不是繪圖墨水筆畫。在本發(fā)明的至少一些示例中,如果需要,語義分析結(jié)果2101可以在獨立于文檔的分析上下文對象1903內(nèi)表示。
如上所述,軟件應(yīng)用程序1701能將新數(shù)據(jù),包括新的電子墨水數(shù)據(jù)1705和新的非墨水數(shù)據(jù)1707輸入到文檔1703內(nèi),而同時第一分析過程正在分析獨立于文檔的分析上下文對象1903。相應(yīng)地,第一分析過程的結(jié)果可能不再應(yīng)用于文檔1703的當前狀態(tài)。例如,雖然語義分析過程可以確定一個墨水筆畫與一個單詞相關(guān)聯(lián),用于可以已經(jīng)一起將墨水筆畫從文檔1703中刪除(例如連同整個相關(guān)的單詞或更多)。相應(yīng)地,分析結(jié)果2101必須在步驟1613內(nèi)與文檔1703的當前狀態(tài)相符。示例協(xié)調(diào)過程在圖23內(nèi)一般說明,且在以下將詳述。
在本發(fā)明的一些示例中,軟件1701可以人工地使得分析結(jié)果2101與文檔1703的當前狀態(tài)相符。即軟件應(yīng)用程序1701可以整理分析結(jié)果2101以確定那些結(jié)果與文檔1703內(nèi)當前的文檔元素相關(guān)。然而在本發(fā)明的其它示例中,墨水分析工具1901可以提供協(xié)調(diào)函數(shù)以使得分析結(jié)果2101與當前分析上下文對象1709協(xié)調(diào)(即分析上下文對象1709反映文檔1703的當前狀態(tài))。如以下將詳細描述的,本發(fā)明的各個示例的協(xié)調(diào)函數(shù)會標識來自第一分析過程的分析結(jié)果2101來自文檔1703的當前狀態(tài)的分析上下文對象1709間的矛盾和“沖突”。墨水分析工具1901然后基于步驟1615內(nèi)的分析結(jié)果對分析上下文對象1709進行更新,并在步驟1617內(nèi)從分析上下文對象1709內(nèi)的相符的分析結(jié)果中建立獨立于文檔的新分析上下文對象1903。
值得注意的是,雖然墨水分析工具1901使得分析結(jié)果2101與當前分析上下文對象1709相符,軟件應(yīng)用程序1701不應(yīng)改變分析上下文對象1709(且它不允許在該時段內(nèi)應(yīng)用程序內(nèi)的其它線程和/或其它程序改變分析上下文對象1709)。即軟件應(yīng)用程序1701不應(yīng)允許其它線程和/或應(yīng)用程序在協(xié)調(diào)完成前向文檔1703輸入新的數(shù)據(jù)。如同初始建立獨立于文檔的分析上下文對象1903的過程,協(xié)調(diào)過程相對較快,然而一般它不會很嚴重地影響軟件應(yīng)用程序1701的操作。然而如果需要,到文檔1703的數(shù)據(jù)輸入可以在完成協(xié)調(diào)過程后經(jīng)緩沖。
在墨水分析工具1901為文檔1703的當前狀態(tài)將分析結(jié)果2101與分析上下文對象1709相符后,墨水分析工具1901可選地可以將經(jīng)協(xié)調(diào)的分析結(jié)果提供給第二分析過程以進行進一步分析。例如,如圖24示出,墨水分析工具1901可以將經(jīng)協(xié)調(diào)的語義分析結(jié)果2401提供給墨水識別過程2003用于識別(例如用于文字、音樂、數(shù)學信息或其它特定數(shù)據(jù)類型的書寫識別)。特別是,墨水分析工具1901會同樣建立分開的分析線程以在步驟1619內(nèi)實現(xiàn)第二分析過程。由于墨水分析工具1901建立該分開的線程用于執(zhí)行第二分析過程,軟件1701可以同樣在步驟1621內(nèi)繼續(xù)其正常操作,且它可能甚至接受包括新電子墨水數(shù)據(jù)1705的新輸入數(shù)據(jù)。
下一步在步驟1623,墨水分析工具1901將來自第二分析過程的協(xié)調(diào)的結(jié)果2401給第二分析過程。一旦第二分析過程開始,應(yīng)用程序1701可以開始對新的未經(jīng)分析墨水執(zhí)行第一分析過程。因此,多個分析過程可以并行被運行,使得當?shù)诙治鲞^程正在對第一分析過程的結(jié)果進行分析時,應(yīng)用程序1701可以重新開始第一分析過程以準備下一分析結(jié)果的集合。
有利地,并行執(zhí)行分析過程可以改善軟件應(yīng)用程序1701的操作。例如,語義分析過程相對于識別分析過程一般較快,且語義分析結(jié)果可以被用于實現(xiàn)正確選擇行為以及空間插入行為,而不使用識別分析結(jié)果。因此,由于不同的分析過程可以并行執(zhí)行,加入文檔1703的新墨水不必要等到識別分析過程完成較舊的墨水數(shù)據(jù)后它才能被選擇或在其中正確地進行空間插入。另外,本發(fā)明的多個示例完成異步墨水分析以分離應(yīng)用程序開發(fā)者(developer)和語義分析器以及識別器算法開發(fā)者間的多線程問題,改善可維持性并為兩個組簡化開發(fā)過程,并使得在不改變應(yīng)用程序情況下對分析過程間的交互進行改變。
如上所述,墨水分析工具1901可以在分析文檔對象1703在經(jīng)更新以包括分析結(jié)果2101的相關(guān)部分后,通過從該對象中建立新的獨立于文檔的分析上下文對象1903而提供協(xié)調(diào)的分析結(jié)果。然而在本發(fā)明的其它示例中,墨水分析工具1901可以簡單地用分析結(jié)果2101更新獨立于原始文檔的分析上下文對象1903以反映文檔1703的當前狀態(tài)。而且,墨水分析工具1901可以簡單地將相關(guān)的作進一步分析墨水數(shù)據(jù)提供給第二分析過程。
因此,本發(fā)明的多個示例在執(zhí)行相繼的分析過程前將先前的分析過程的結(jié)果與文檔1703的當前狀態(tài)相符。然而值得注意的是該中間協(xié)調(diào)過程可以從本發(fā)明的一些示例中略去。尤其是,在本發(fā)明的一些示例中,早些分析過程的結(jié)果可以直接被提供給相繼的分析過程,而不用將這些結(jié)果與文檔1703的當前狀態(tài)相符。例如,如果與墨水布局分析器過程分開提供了墨水分類器過程,則被分類為書寫文本的墨水可以被提供給墨水布局分析器過程而不經(jīng)中間協(xié)調(diào)步驟。
在第二分析過程2003完成分析來自第一分析過程的經(jīng)協(xié)調(diào)結(jié)果2401后,對于無論哪個安排,第二分析過程2003將其結(jié)果2501返回到墨水分析工具1901,如圖25示出。然后在步驟1625內(nèi)墨水分析工具1901然后通知軟件應(yīng)用程序1701第二分析的結(jié)果2501。
如上所述,軟件應(yīng)用程序1701能將新數(shù)據(jù),包括新的電子墨水數(shù)據(jù)1705輸入到文檔1703內(nèi),而同時第二分析過程正在分析第一分析過程的協(xié)調(diào)的結(jié)果2401。第二分析過程的結(jié)果2501可能不再應(yīng)用于文檔1703的當前狀態(tài)。相應(yīng)地,第二分析過程2003的結(jié)果2401還必須在步驟1627內(nèi)與文檔1703的當前狀態(tài)相符。在圖26內(nèi)一般說明了示例協(xié)調(diào)過程,在以下將詳細說明。
在本發(fā)明的一些示例中,軟件1701可以人工地使得分析結(jié)果2501與文檔1703的當前狀態(tài)相符?;蛘?,在本發(fā)明的其它示例中,墨水分析工具1901可以提供協(xié)調(diào)函數(shù)以使得分析結(jié)果2101與當前分析上下文對象1709協(xié)調(diào)。該協(xié)調(diào)函數(shù)會標識來自第二分析過程的分析結(jié)果2501和文檔1703的當前狀態(tài)的分析上下文對象1709間的矛盾和“沖突”,且墨水分析工具1901然后在步驟1629內(nèi)基于分析結(jié)果對分析上下文對象1709進行更新。該過程必要時可以經(jīng)重復以分析在分析過程中被改變的新的墨水輸入或墨水。
從以上的討論中,很明顯根據(jù)本發(fā)明的各個示例的墨水分析技術(shù),在分析過程中,允許電子墨水能從軟件應(yīng)用程序1701經(jīng)異步分析,允許軟件應(yīng)用程序1701繼續(xù)接受輸入數(shù)據(jù),包括新電子墨水。值得注意的是,雖然上述的討論只描述兩個分析過程,任何數(shù)量的分析過程可以并行地被并發(fā)實現(xiàn)。例如,本發(fā)明的各個實現(xiàn)可以使用第一語義分析過程、第二語義分析過程以及識別過程。這樣,一旦完成每個分析過程,其結(jié)果可以被傳遞到下一分析過程,且第一分析過程可以再次在新輸入的墨水上并發(fā)或并行地運行。
另外,本發(fā)明的各個示例的一個或多個分析過程可以被按順序執(zhí)行。例如,在一些軟件應(yīng)用程序中,用戶能為墨水筆畫或筆畫集合指定特定的語言,諸如英語或日語。該語言指定然后可以被包括在分析上下文對象1709以及獨立于文檔的分析上下文對象1903內(nèi)?;谡Z言指定,墨水分析工具1901可以將指定為第一語言的電子墨水路由到適用于該第一語言的識別過程,并接著將指定為第二語言的電子墨水路由到適用于該第二語言的不同的識別過程。這樣,經(jīng)分類和/或被指定為其它特定類型的輸入數(shù)據(jù)可以被發(fā)送到其它特定的識別器,諸如用于音樂、電子符號、數(shù)據(jù)符號、流程圖特征、圖形特征等的識別器。
而且,由于分析過程不需要是軟件應(yīng)用程序1701的部分,任何期望的分析過程可以用于分析在軟件應(yīng)用程序1701內(nèi)的電子墨水。例如,軟件應(yīng)用程序開發(fā)者可以研發(fā)并使用語義分析過程或識別過程,這些過程是特定適用于分析除了軟件應(yīng)用程序1701外的電子墨水輸入。
本發(fā)明的各個實現(xiàn)還可以使用這些技術(shù)的其它變體。例如,在一些情況下,軟件應(yīng)用程序1701可能不期望維持反映文檔1703內(nèi)的多個文檔元件間的關(guān)系的內(nèi)部文檔樹。而是軟件應(yīng)用程序1701可能只使用簡單的關(guān)于電子墨水輸入的狀態(tài)信息。在這些軟件應(yīng)用程序1701內(nèi),軟件應(yīng)用程序1701可以略去建立反映整個文檔1703的當前狀態(tài)的分析上下文對象1709。而是,軟件應(yīng)用程序1701可以建立特定用途的分析上下文對象1709,它只包含與軟件應(yīng)用程序1701期望分析的特定墨水輸入相關(guān)的信息。通過使用特定用途的分析上下文對象1709,軟件應(yīng)用程序1701可以避免維持對應(yīng)文檔1703的狀態(tài)的內(nèi)部數(shù)據(jù)結(jié)構(gòu)的復雜度,而仍能使用期望的分析過程以分析文檔內(nèi)的墨水。
而且,雖然上述的描述討論電子墨水的異步分析,但值得注意的是本發(fā)明的多個示例允許墨水分析工具1901同步地分析墨水。例如,本發(fā)明的一些實現(xiàn)可以允許軟件應(yīng)用程序1701指示墨水分析工具1901以實現(xiàn)電子墨水立刻并同步的分析。另外,同步分析可以只針對文檔1703的特定區(qū)域內(nèi)或整個文檔1703內(nèi)的墨水。
墨水分析工具如上所述,墨水分析工具1901實現(xiàn)多個功能以方便電子墨水的處理。例如,根據(jù)本發(fā)明的多個實現(xiàn),墨水分析工具1901從軟件應(yīng)用程序1701接收信息,應(yīng)用程序指定帶有要分析的墨水數(shù)據(jù)的文檔內(nèi)的一個或多個區(qū)域,查詢軟件應(yīng)用程序1701以獲得關(guān)于這些區(qū)域的信息,然后基于這些信息構(gòu)建獨立于文檔的分析上下文對象1903。另外,墨水分析工具1901將獨立于文檔的分析上下文對象1903提供給一個或多個分析過程用于分析,然后將分析結(jié)構(gòu)與文檔1703的當前狀態(tài)相符。多個處理可以使用分開的線程(如上所述)實現(xiàn),通過線程池、作為分開的過程、通過機群內(nèi)的機器或以任何其它合適或期望的方式,而不偏離本發(fā)明。
根據(jù)本發(fā)明的不同示例,多個軟件對象和工具可以用于實現(xiàn)墨水分析工具1901并實現(xiàn)這些功能。然而在本發(fā)明的一些示例中,墨水分析工具1901作為應(yīng)用編程接口(API)實現(xiàn)。更特定地,根據(jù)本發(fā)明的一些示例,墨水分析工具1901可以被實現(xiàn)為一組軟件對象例程且相關(guān)的信息可以為軟件應(yīng)用程序1701在需要分析文檔1703內(nèi)的墨水時調(diào)用。
如領(lǐng)域內(nèi)普通技術(shù)人員理解的,應(yīng)用編程接口可以被組織成術(shù)語軟件對象的類別或“類”?!皩ο蟆笔强纱鎯顟B(tài)值和可執(zhí)行行為的集合。更特定地,對象可以維持不同類型的狀態(tài)值,被稱為“字段”和“屬性”,這可以與對象相關(guān)聯(lián)或由對象獲取。關(guān)于外部軟件應(yīng)用程序或另一軟件對象,這些屬性可以是只讀(使用項“{get;}”標識)、只寫(使用項“{set;}”標識)、或可讀和可寫(標識為“{get;set}”)。對象還可以經(jīng)常在軟件應(yīng)用程序或其它對象的請求或“調(diào)用”下執(zhí)行任務(wù)或“方法”。因此,應(yīng)用編程接口可以包括多個由另外軟件應(yīng)用程序指示的對象以實現(xiàn)特定的任務(wù)或在請求后提供特定的信息。
可以理解的是本發(fā)明的多個示例可以經(jīng)實現(xiàn)以要求軟件應(yīng)用程序1701只提供完成期望的分析過程需要的最小量的信息。因為這個原因,以下詳細描述的屬性只可以被討論為只讀(即“{get;}”)或只寫(“{set;}”)屬性,但對于本發(fā)明的多個另外實現(xiàn)可以為可讀和可寫。例如,定義為分析過程用于分析電子墨水的“暗示(hints)”的屬性可以在軟件應(yīng)用程序1701不希望使用暗示時被標識為只讀屬性。這使得墨水分析器建立的對象至少讀取該屬性,并確定該屬性的值為缺省的零值(即軟件應(yīng)用程序1701不需要“暗示”)。然而如果,軟件應(yīng)用程序1701需要使用暗示以進行墨水分析,則該屬性為可讀和可寫以使得軟件應(yīng)用程序1701從零值改變該屬性值,為了規(guī)定期望的暗示。
根據(jù)本發(fā)明的多個示例,體現(xiàn)墨水分析工具1901的實現(xiàn)的API(此后被稱為墨水分析API)可以包含兩個核心類。第一類可以被稱為“分析上下文”類,第二個類為“墨水分析器”類。“分析上下文”類的分量被用于建立分析上下文對象1709。相應(yīng)地,在本發(fā)明的多個實現(xiàn)內(nèi),其中軟件應(yīng)用程序1701建立并維持其自己的分析上下文對象1701,在該類中的一個或多個分量可以從墨水分析工具中略去。而是,一個或多個這些分量可以由軟件應(yīng)用程序1701本身實現(xiàn)。
“墨水分析器”類的分量然后用于建立并使用對象,該對象將獨立于文檔的分析上下文對象1903提供給分析過程,確定何時生成分析結(jié)果并將分析結(jié)果與文檔1703的當前狀態(tài)相符。根據(jù)以下將會詳細討論的本發(fā)明的多個示例這些和其它類可以包括在墨水分析API中。
首先看分析上下文類,該類由宿主應(yīng)用程序1701實現(xiàn)以建立分析上下文對象1703,該對象用作到軟件應(yīng)用程序1701的內(nèi)部文檔樹的代理視圖。或者,如上所述,如果應(yīng)用程序?qū)崿F(xiàn)其自己的分析上下文對象,則該類內(nèi)的一個或多個分量可以從墨水分析工具1901中略去。如上所述,分析上下文對象1703包含所有未經(jīng)分析的墨水數(shù)據(jù),且分析上下文對象1703用于標識哪些未經(jīng)分析的墨水數(shù)據(jù)應(yīng)經(jīng)分析。這些分析上下文對象1703還包含關(guān)于先前分析的墨水的信息。這先前經(jīng)分析的墨水可以被用于決定應(yīng)如何分析當前未經(jīng)分析的墨水,且其本身也可以在分析未經(jīng)分析的墨水過程中經(jīng)修改。另外,分析上下文對象1703包含關(guān)于文檔1703的非墨水內(nèi)容的信息,該信息被用于合適地將墨水分類為非墨水內(nèi)容的注解。
根據(jù)本發(fā)明的多個示例,分析上下文類包括構(gòu)建器,當為軟件應(yīng)用程序1701調(diào)用時,創(chuàng)建分析上下文對象1709。該類還可以包括分析上下文對象1709的多個屬性,包括名為“Dirty Region{get;}”的屬性。該Dirty Region屬性定義了包含未經(jīng)分析墨水數(shù)據(jù)的文檔的部分(因此分析上下文對象1709的部分)。在本發(fā)明的示例中,Dirty Region還可以定義不相交的區(qū)域。DirtyRegion被規(guī)定為分析區(qū)域,以下將詳述,但這可能只是文檔內(nèi)的矩形區(qū)域的集合。如果Dirty Region為空,則不會進行分析。該類可以進一步包括用于名為“Margin{get;}”的分析上下文對象1703的屬性,它聲明文檔1703的頁內(nèi)被認為是邊的區(qū)域。例如分析布局并確定電子墨水的分類的分析過程可能使用該屬性以幫助確定注解非墨水內(nèi)容的電子墨水分類(例如邊上的墨水)。
另外,分析上下文類可能包括名為“Rootnode{get;}”的屬性,它標識分析上下文對象1709內(nèi)的最上面或根上下文節(jié)點。如以上詳述,該根上下文節(jié)點如同子上下文節(jié)點,包含所有用于給定分析上下文對象1709的其它上下文節(jié)點對象。值得注意的是,本發(fā)明的多個示例中,根上下文節(jié)點必須是上下文節(jié)點類型“Root”。還值得注意的是,本發(fā)明的示例中,其中應(yīng)用程序1701實現(xiàn)其自己的分析上下文對象1709,分析上下文對象1709可以由其它的上下文節(jié)點作為根上下文節(jié)點的兄弟,但墨水分析器類的分量被限制為考慮根上下文節(jié)點包含的上下文節(jié)點。
分析上下文類可以另外包括屬性“Analysis Hints{get;}”,它返回由軟件應(yīng)用程序1701設(shè)定的analysis hint對象集合的陣列。如以下將更詳細地描述的,analysis hint對象可以包含任何可以幫助分析過程的信息類型。該信息可以包括例如仿真陳述、指南或單詞列表。還可以包括設(shè)定用于分析的語言的信息、指定未經(jīng)分析的墨水為只書寫文本或只繪圖的信息或提供給語義分析過程任何類型的幫助,諸如標識墨水為列表、表格、形狀、流程圖、連接符、包含等。
除了這些屬性外,分析上下文類還可以包含多個方法,它可以為例如軟件應(yīng)用程序1701調(diào)用以使得分析上下文對象1709執(zhí)行任務(wù)。例如,分析上下文類可以包括名為“FindNode(Guid id)”的方法。分析上下文對象1709內(nèi)的每個節(jié)點有全局唯一的標識符(即GUID),且該方法會定位在分析上下文對象1709內(nèi)任何地方的調(diào)用內(nèi)規(guī)定的節(jié)點。該查詢方法應(yīng)盡可能地有效地實現(xiàn),因為該方法可以從多次關(guān)鍵操作中被調(diào)用。
類似于分析上下文類,墨水分析器類還定義公共構(gòu)建器,它允許軟件應(yīng)用程序1701建立類的實例(即墨水分析器對象)以及多個屬性。例如,它可以包含名為“User Interface Context{get;set;}”的屬性,它定義分析過程的結(jié)果要返回的處理線程。該屬性使得結(jié)果與另一對象同步。例如,如果這是設(shè)定到主形式,語義分析器結(jié)果會在應(yīng)用程序主線程上被引發(fā)。它還可以包含屬性“AnalysisOptions AnalysisOptions{get;set;}”,它規(guī)定可以用于分析過程的多個準則。這些準則可以包括例如啟用文本識別、啟用表格的使用、啟用列表的使用、啟用注解的使用以及啟用連接符和包含的使用。
墨水分析器類會包括多個方法。例如,該類可以包括名為“AnalysisRegionAnalyze()”的方法。該方法開始同步分析過程。文檔元素數(shù)據(jù)被傳遞到該方法,它描述文檔1703的當前狀態(tài),并指明文檔1703內(nèi)的哪些墨水需要被分析。在本發(fā)明的一些實現(xiàn)內(nèi),文檔元素數(shù)據(jù)可以作為分析上下文對象1709被提供(例如AnalysisRegion Analyze(Analyze context)),如上所述。或者,單個墨水筆畫可以被傳遞到分析過程中,或者使用到筆畫的引用(即AnalysisRegion Analyze(Strokes))或被引用為墨水分析器對象(例如InkAnalyzer.Strokes{get;set;})的屬性而沒有屬性傳遞到分析方法。
一旦完成分析過程,該方法會返回對獨立于文檔的分析上下文對象的引用,該對象經(jīng)修改以包含分析過程的結(jié)果。該方法還返回AnalysisRegion值(如下詳細討論),該值描述結(jié)果已經(jīng)被計算的文檔內(nèi)的區(qū)域。
墨水分析器類可能還包括名為“AnalysisRegionAnalyze(AnalysisContext,waitRegion)”。該方法與上述的同步AnalysisRegion Analyze()方法一樣,但如果結(jié)果在特定的waitRegion區(qū)域內(nèi)需要,它只分析墨水。更特定地是,對該方法的調(diào)用會為文檔1703標識分析上下文對象1709以及分析過程應(yīng)對其進行同步分析的分析上下文對象1709的區(qū)域(被稱為“waitRegion”)。本發(fā)明的多個示例中,會忽略分析上下文對象1709的所有其它區(qū)域,除非分析過程需要分析這些區(qū)域內(nèi)的內(nèi)容以完成其對waitRegion的分析。如上所述,與該方法傳遞的分析上下文對象1709包含稱為“DirtyRegion”的屬性,它描述需要分析的文檔1703的區(qū)域。通過規(guī)定特定的waitRegion,軟件應(yīng)用程序1701可以更快地獲得感興趣的特定區(qū)域的分析結(jié)果,而不是分析文檔1703內(nèi)所有的墨水數(shù)據(jù)。
當調(diào)用這些分析方法的任何一種時,每個可用的分析過程會被執(zhí)行。而且,由于這些分析方法為同步的調(diào)用,則不需要在其完成時調(diào)用相符過程,一旦其完成也不需要引發(fā)時間。
墨水分析器類還可以包括名為“BackgroundAnalyze(AnalysisContext)”的方法。該方法開始規(guī)定的分析操作,但在分開的后臺分析線程上執(zhí)行。因此,該方法會將控制返回到主處理線程,這幾乎與實際分析操作在后臺完成時。特別是,如果分析過程被成功開始,則該方法會返回“true”值。同樣,傳遞到方法的AnalysisContext值為文檔1703標識分析上下文對象1709并指明文檔1703內(nèi)哪些墨水需要被分析。一旦分析操作在后臺線程上完成,喚醒Results時間使得軟件應(yīng)用程序1701能訪問結(jié)果。時間包含結(jié)果以及相符方法,該方法用于在返回結(jié)果時為文檔1703的當前狀態(tài)將結(jié)果包括在分析上下文對象1709中。
值得注意的是這些三個分析方法的每個依次調(diào)用在“Analysis Region”類中“克隆”的方法,這在以下將被詳細討論。使用“克隆”方法,這些分析方法建立獨立文檔分析上下文對象,該對象接著由分析過程經(jīng)修改以示出分析結(jié)果。
墨水分析器類還可以包括名為“Reconcile(Analysi sContextcurrent,AnalysisResultsEventArgs resultArgs)”的方法,該方法由軟件應(yīng)用程序1701在接收到由呼叫BackgroundAnalyze(AnalysisContext)方法而引起的結(jié)果事件后調(diào)用。Reconcile方法將包含在獨立于文檔的分析上下文對象內(nèi)的分析結(jié)果與由軟件應(yīng)用程序1701維持的分析上下文對象1709的當前版本比較。該方法標識需要加入或從分析上下文對象1709的當前版本中移去的節(jié)點,并標識是否有任何現(xiàn)存節(jié)點的屬性的任何一個有所改變,這些屬性有其識別結(jié)果、其位置、與該節(jié)點相關(guān)聯(lián)的墨水筆畫或任何其它與分析操作的結(jié)果相關(guān)聯(lián)的數(shù)據(jù)。該方法還將這些標識的改變寫入到分析上下文對象1709的當前版本。該方法對于上下文節(jié)點排序的順序敏感,諸如在行上下文節(jié)點上的單詞上下文節(jié)點的順序。
分析結(jié)果(即屬性AnalysisResultsEventArgs的值)與該方法一起被傳遞回,由于它們包含公共結(jié)果結(jié)構(gòu)和私用結(jié)果結(jié)構(gòu)。該公共結(jié)構(gòu)被返回,所以軟件應(yīng)用程序1701可以預覽會在相符階段發(fā)生的改變。包括私有結(jié)構(gòu)以防止軟件應(yīng)用程序1701在相符過程前改變?nèi)魏畏治鼋Y(jié)果。
墨水分析器類還可以包括名為“Recognizers RecognizersPriority()”以及“SetHighestPriorityRecognizer(recognizer)”的方法。當需要識別墨水時,會基于語言和容量而使用合適的識別器。相應(yīng)地,RecognizersRecognizersPriority()方法會返回識別過程,其順序是它們由墨水分析器對象評估的順序。該順序取決于可用的識別過程而在每系統(tǒng)的基礎(chǔ)上經(jīng)確定,但可以通過對墨水分析器對象調(diào)用SetHighestPriorityRecognizer(recognizer)而使之無效。InkAnalyzer會通過該排序的列表而列舉,直到找到合適的識別器。SetHighestPriorityRecognizer(recognizer)方法會喚醒識別過程的優(yōu)先級。通過喚醒特定識別過程的優(yōu)先級,如果識別過程匹配需要的語言和當前識別操作的容量,則使用該識別過程?;旧希琒etHighestPriorityRecognizer(recognizer)將指定的識別過程推到由RecognizersPriority方法返回的列表的頂部。
墨水分析器類還包含名為“AnalysisRegion Abort()”方法,該方法可以使用分析上下文對象作為參數(shù)。該方法允許前臺或后臺分析操作可以早期結(jié)束。該方法返回描述在放棄前正在被分析的區(qū)域的分析區(qū)域。因此,如果軟件應(yīng)用程序1701要在以后某時間繼續(xù)分析操作,該區(qū)域可以為文檔1703的當前狀態(tài)合并到分析上下文對象1709的DirtyRegion內(nèi)。而且,墨水分析器類還可以包括名為“AnalysisResultsEventHandler”的事件,它按實際需要頻繁地引發(fā)InkAnalyzer對象。更特定地,該事件可能在分析過程間引發(fā),且至少每隔5秒一次。該事件可以用于將對正在進行的異步分析過程(或多個)的狀態(tài)的更新提供給應(yīng)用程序1701。
墨水分析API還可以包括類,除了分析上下文類和墨水分析器類外。例如,根據(jù)本發(fā)明的多個示例的墨水分析API可以包括Context Node類。該類可以包括與多個上下文節(jié)點相關(guān)的多個分量,該上下文節(jié)點組成分析上下文對象1709和獨立于文檔的分析上下文對象,諸如名為“ContextNodeTypeType{get;}”的屬性。如在領(lǐng)域內(nèi)的技術(shù)人員可以理解的,每個上下文節(jié)點有一種類型,且每個類型必須協(xié)調(diào)特定的規(guī)則集合。這包括諸如例如以下規(guī)則哪種類型的子上下文節(jié)點是被允許的,且是否筆畫能直接與上下文節(jié)點相關(guān)聯(lián)或只能通過其子上下文節(jié)點。
可能的上下文節(jié)點類型可以在ContextNodeTypes枚舉內(nèi)被定義,且包括(但不限于)例如以下類型InkAnnotation節(jié)點,它標識注解非文本數(shù)據(jù)的墨水數(shù)據(jù);InkDrawing節(jié)點,它標識形成附圖的墨水數(shù)據(jù);InkWord節(jié)點,它標識形成單詞的墨水數(shù)據(jù);Line節(jié)點,它包含一個或多個形成文本行的單詞的InkWord節(jié)點和/或TextWord節(jié)點;ListItem節(jié)點,這可以包含Paragraph、Image或列表內(nèi)期待的類似節(jié)點;以及List節(jié)點,這包含一個或多個ListItem節(jié)點,每個描述列表內(nèi)的一項。節(jié)點類型可能還包括NonInkDrawing節(jié)點,表示非墨水繪像;Object節(jié)點,表示ContextNodeType枚舉的其它值未能覆蓋的數(shù)據(jù);Paragraph節(jié)點,它包含一個或多個對應(yīng)形成段落的行的Line節(jié)點;Picture或Image節(jié)點,表示圖片圖像;Root節(jié)點,它作為分析上下文對象內(nèi)的頂層節(jié)點;Table節(jié)點,它包含表示組成表格的項的節(jié)點;TextBox節(jié)點,表示文本盒;TextWord節(jié)點;以及UnclassifiedInk節(jié)點,對應(yīng)還未經(jīng)分類的墨水數(shù)據(jù)。節(jié)點類型還可能包括Group節(jié)點,用于其它節(jié)點的組,InkBullet節(jié)點,用于墨點項,Row節(jié)點,用于以表格的行形式表示的文檔元素,以及Cell節(jié)點,用于以表格的單元格表示的文檔元素。
Context Node類還可以包括名為“GUID Id{get;}”的屬性,它對應(yīng)當前上下文節(jié)點是全局唯一的標識符。為了允許訪問任何期望的上下文節(jié)點,在單個分析上下文對象內(nèi)的每個上下文節(jié)點必須總有唯一的標識符。該類還可以包括名為“AnalysisRegion Location{get;}”的屬性,它標識文檔空間內(nèi)相關(guān)上下文節(jié)點實際位于的位置。如先前所述,AnalysisRegion是將一個或多個可能的不橡膠的矩形如同結(jié)構(gòu)組合在一起的兩維結(jié)構(gòu)。該類還可以包括名為“StrokeCollection Strokes{get;}”的屬性,它標識與相關(guān)的上下文節(jié)點相關(guān)聯(lián)的墨水筆畫。在本發(fā)明的多個示例中,一個葉子上下文節(jié)點(諸如Word、Drawing和Bullet節(jié)點)由Ink Analysis API允許有筆畫。軟件應(yīng)用程序1701可以使用該屬性以通過所有父輩級上下文節(jié)點而引用在葉子節(jié)點層處的筆畫(例如,根節(jié)點會包含一個筆畫,該筆畫引用在相關(guān)的分析上下文對象內(nèi)的所有筆畫)。
另外,該類還包括名為“ContextNode ParentNode{get;}”,它標識包含相關(guān)上下文節(jié)點的父上下文節(jié)點。在本發(fā)明的各個示例中,上下文節(jié)點總是被建立以依靠一父上下文節(jié)點,Root上下文節(jié)點是分析對象節(jié)點的靜態(tài)成員。該類還可以包括“ContextNode[]SubNodes{get;}”的屬性,它標識所有是相關(guān)的上下文節(jié)點的直接子節(jié)點的上下文節(jié)點。即該屬性只會標識在分析上下文對象內(nèi)的一層以下的這些子上下文節(jié)點。例如,Paragraph上下文節(jié)點的該屬性值只會標識由Paragraph節(jié)點包含的行上下文節(jié)點,而不包含為行上下文節(jié)點的子節(jié)點的單詞上下文節(jié)點。
該類還包括名為“RecognitionResult RecognitionResult{get;}”的屬性,它提供相關(guān)識別分析過程或多個過程計算的識別結(jié)果,由于RecognitionResult可以標識多于一種語言的多于一行文本。RecognitionResult對獨立于文檔的分析上下文對象內(nèi)的每個上下文節(jié)點是可用的,即使由識別分析過程設(shè)定并用于建立RecongnitionResult的RecognitionData屬性(以下將詳述)可能只在上下文節(jié)點樹的一層被設(shè)定以避免數(shù)據(jù)的重復。如果節(jié)點沒有與之相關(guān)聯(lián)的RecognitionData,則它會將其子節(jié)點的所有的識別結(jié)果合并或從其父節(jié)點抽取識別結(jié)果。該類還可以包括名為“StreamRecognitionData{get;set;}”的屬性,它是RecognitionResult值的持久形式。同樣,識別分析過程生成在相關(guān)的上下文節(jié)點上設(shè)定的StreamRecognitionData值。RecognitionResult對象然后根據(jù)該值被構(gòu)建。
Context Node類還可以進一步包括名為“ContextLink[]Links{get;}”的屬性,它提供ContextLink對象的陣列。ContextLink對象描述兩個上下文節(jié)點間的其它關(guān)系。雖然上下文節(jié)點一般有與其它上下文節(jié)點的父子關(guān)系,但ContextLink允許上下文節(jié)點間的其它關(guān)系。例如,ContextLink可能允許兩個上下文節(jié)點間的連接、一個上下文節(jié)點到另一上下文節(jié)點的錨定,一個上下文節(jié)點為另一上下文節(jié)點包含,或由軟件應(yīng)用程序1701定義的鏈接的一種期望類型。ContextLinks可以通過調(diào)用AddLink方法而被加入陣列,如以下將詳細討論。類似地,ContextLinks可以通過調(diào)用DeleteLink方法而從該陣列中被移去,這在以下將詳細討論。
而且,該類還可以包括“IsContainer{get;}”的屬性以及“IsLinkLeaf{get;}”的屬性。屬性IsContainer{get;}有為“true”的值,如果相關(guān)的上下文節(jié)點不是葉子上下文節(jié)點(即如果上下文節(jié)點不包含子上下文節(jié)點,且因此被認為是包含上下文節(jié)點),且否則有“false”值。IsLinkLeaf{get;}屬性有為“true”的值,如果當前上下文不是包含上下文節(jié)點,否則值為“false”。即,如果當前上下文節(jié)點不包含任何子上下文節(jié)點,則它被認為是葉子上下文節(jié)點。還值得注意的是,在本發(fā)明的各個示例中,InkLeaf上下文節(jié)點被期望包含對筆畫數(shù)據(jù)的引用,其中包含上下文節(jié)點沒有該限制。包含上下文節(jié)點可以或可以不引用筆畫數(shù)據(jù),如軟件應(yīng)用程序1701指定的。
Context Node類還可以包含“Rect RotatedBoundingBox{get;set;}”的屬性。該屬性值可以通過布局和分類分析過程計算。如果與相關(guān)的上下文節(jié)點相關(guān)的墨水數(shù)據(jù)以某角度書寫,則上下文節(jié)點的界仍會被水平對齊。然而RotatedBoundingBox屬性的值會和與相關(guān)上下文節(jié)點相關(guān)倆的墨水數(shù)據(jù)的角度對齊。而且,該類還可以包括“ReCla上下文ifiable{get;}”的屬性,它通知InkAnalyzer它是否被允許修改相關(guān)的上下文節(jié)點的值。
除了這些屬性以外,Context Node類還可以包括多個方法。例如,該類可以包括名為“ContextNode CreateSubNode(ContextNodeType Type”的方法。該方法允許建立特定類型的子上下文節(jié)點。在本發(fā)明的各個示例中,該方法可以只允許建立有效的相關(guān)上下文節(jié)點的子類型,從而防止建立畸形的數(shù)據(jù)結(jié)構(gòu)。例如,該方法可以允許Line上下文節(jié)點建立InkWord和TextWord子上下文節(jié)點。該類還可以包含名為“void DeleteSubNode(ContextNode node)”的方法,它從相關(guān)的分析上下文對象中刪除被引用的子上下文節(jié)點。然而值得注意的是,在本發(fā)明的多個示例中,如果被引用的上下文節(jié)點仍包含筆畫或子上下文節(jié)點,則該方法會失敗。而且,如果引用上下文節(jié)點不是相關(guān)的上下文節(jié)點的直接子節(jié)點,則該方法會失敗。值得注意的是,如果軟件應(yīng)用程序1701實現(xiàn)其自己的分析上下文對象1709,接著使用該方法,它不刪除非空上下文節(jié)點或者不是相關(guān)上下文節(jié)點的直接子節(jié)點的上下文節(jié)點,以防止在分析上下文對象1709內(nèi)的畸形數(shù)據(jù)結(jié)構(gòu)。
而且,該類可能包括方法“ContextNode[]HitTestSubNodes(AnalysisRegion region)”,它返回位于特定區(qū)域內(nèi)的上下文節(jié)點的陣列。然而使得注意的是,只返回該元素的直接子節(jié)點,而不是所有派生的子節(jié)點。該區(qū)域由AnalysisRegion對象定義,如前所述,可能是一個或多個舉行的集合。根據(jù)本發(fā)明的多個示例,如果上下文節(jié)點的位置的任何部分與特定區(qū)域相交,則該上下文節(jié)點會在陣列內(nèi)被返回。該方法被用于例如建立獨立于文檔的分析上下文對象,并使得分析結(jié)果與對應(yīng)文檔1703的當前狀態(tài)的分析上下文對象相符。因此,該方法經(jīng)常被調(diào)用,且應(yīng)經(jīng)優(yōu)化以為InkAnalyzer對象快速重復訪問。
Context Node類還包含名為“MoveStroke(Stroke stroke,ContextNodedestination)”的方法。該方法將筆畫的關(guān)聯(lián)從一個葉子上下文節(jié)點移到另一個。在本發(fā)明的多個示例中,該方法只在葉子上下文節(jié)點間被使用。它還可能包括名為“MoveSubNodeToPosition(int OldIndex,int NewIndex)”的方法,它將相關(guān)的上下文節(jié)點相對于其兄弟上下文節(jié)點而重新排序。例如,如果文檔1703在一行內(nèi)有三個單詞,例如單詞1、單詞2和單詞3,然后它們的順序由從父上下文節(jié)點返回的子節(jié)點陣列暗指。該方法使得它們的順序被改變,使得相對于相關(guān)的父上下文節(jié)點,通過將單詞1的上下文節(jié)點從位置一移到位置三,單詞1被規(guī)定為行上最后的單詞。
而且,該類可以包括名為“AddLink(ContextLink Link)”的方法,它將新的ContextLink對象加入當前的上下文節(jié)點。在本發(fā)明的多個實施例中,ContextLink對象必須包含對相關(guān)上下文節(jié)點的引用以使得ContextLink成功地被加入與相關(guān)的上下文節(jié)點的ContextLinks的陣列。它還可以包含名為“DeleteLink(ContextLink link)”的方法。該方為相關(guān)的上下文節(jié)點從ContextLinks的陣列中刪除或移去規(guī)定的ContextLink對象。值得注意的是,在本發(fā)明的多個示例中,該方法調(diào)用總是成功地完成,即使ContextLink不存在在與相關(guān)的上下文節(jié)點相關(guān)聯(lián)的ContextLinks陣列內(nèi)。
Ink Analysis API還可以包括Analysis Hint類。如先前許多描述的類,Analysis Hint類可以包含構(gòu)建器,名為“AnalysisHint()”,它將AnalysisHints對象初始化為空狀態(tài)。該類還可以包括多個屬性,包括名為“AnalysisRegion Location{get;}”的屬性。該屬性規(guī)定文檔內(nèi)AnalysisHint可應(yīng)用的位置(作為AnalysisRegion)。例如,如果文檔1703是在頁的頂部有標題部分的自由形式的筆記,則1701會為標題區(qū)域設(shè)定AnalysisHint以規(guī)定在該區(qū)域內(nèi)預計的水平墨水行。該Analysis Hint會幫助增加分析過程的準確性。
該類還包括名為“string Factoid{get;set;}”的屬性,它規(guī)定特定的“仿真陳述”,即用于AnalysisHint應(yīng)用到的文檔1703內(nèi)的位置。如領(lǐng)域內(nèi)的技術(shù)人員已知的,仿真陳述提供關(guān)于墨水數(shù)據(jù)的預計的使用提示給識別過程(例如規(guī)則文本、數(shù)字、郵政編碼、文件名和網(wǎng)頁URL)。該類還可以包括名為“RecognizerGuide Guide{get;set;}”和“OverrideLanguageID{get;set;}”的屬性。RecognizerGuide Guide{get;set;}屬性規(guī)定寫入指南,它應(yīng)用于AnalysisHint應(yīng)用到的文檔1703內(nèi)的位置。寫入指南可以例如通過規(guī)定用戶并通知識別器分析過程用戶在哪里寫入行或字符而改善識別器分析過程的準確性。OverrideLanguageID{get;set;}屬性規(guī)定AnalysisHint可應(yīng)用的文檔1703內(nèi)的Language Hint。設(shè)定Language Hint引起InkAnalyzer對象使用指定的語言而不是在上下文節(jié)點上規(guī)定的語言。
類還可以包括名為“PrefixText{get;set;}”屬性,它規(guī)定在要識別的墨水行之前寫入或打入的文本。而且,該類還可以包括名為“RecognitionModesRecognitionFlags{get;set;}”屬性,它規(guī)定識別過程在AnalysisHint可應(yīng)用的文檔1703內(nèi)的位置處應(yīng)遵守的特定模式類型。而且,該類還可以包含名為“SuffixTex{get;set}”屬性,它規(guī)定在要識別的墨水行之后寫入或打入的文本,還可以包括名為“WordList WordList{get;set;}”屬性,它規(guī)定應(yīng)為識別分析過程使用的特定單詞集合。當在用戶實際寫入輸入數(shù)據(jù)前知道預計的識別結(jié)果時,可以使用單詞列表,諸如預計在醫(yī)藥表格內(nèi)寫入的醫(yī)藥項列表。
而且,該類還包括名為“WordMode{get;set;}”屬性。如果該值為“true”,則分析過程會偏向為整個分析區(qū)域返回單個單詞。它還可能包括名為“Coerce{get;set;}”的屬性,該屬性如果為“true”,則會強迫分析過程將其結(jié)果限制在相關(guān)提示內(nèi)的任何仿真陳述或單詞列表值集合內(nèi)。該列還可以包含名為“AllowPartialDictionaryTerms{get;set;}”的屬性。如果該屬性為“true”,則識別分析過程會被允許從識別字典返回部分單詞。
根據(jù)本發(fā)明的多個示例,Ink Analysis API可以進一步包括AnalysisRegion類。該類可能包括例如多個構(gòu)建器,用于構(gòu)建AnalysisRegion對象。例如,它可能包含第一構(gòu)建器,用于構(gòu)建帶有任何區(qū)域的AnalysisRegion對象;第二構(gòu)建器,用于基于二維矩形的參數(shù)而構(gòu)建AnalysisRegion對象;以及第三構(gòu)建器,用于基于四個空間坐標以構(gòu)建AnalysisRegion對象。缺省構(gòu)建器可以例如創(chuàng)建空區(qū)域。該類可以還包括多個屬性。例如,該類還可以包括名為“Rectangle Bounds{get;}”的屬性,它為AnalysisRegion獲取邊界矩形,還包括名為“IsEmpty{get;}”的屬性,它指示相關(guān)的AnalysisRegion是否有空的內(nèi)部,還包括名為“IsInfinite{get;}”的屬性,它指示相關(guān)的AnalysisRegion是否被設(shè)定為無限。
該類還可以包括多個方法,諸如名為“AnalysisRegion Clone()”的方法,它克隆相關(guān)的AnalysisRegion對象。該類還可以包括名為“Equals(AnalysisRegion otherRegion)”的方法,它測試特定的AnalysisRegion對象(被稱為otherRegion)是否與相關(guān)的AnalysisRegion對象相同。如果特定的AnalysisRegion對象與相關(guān)的AnalysisRegion對象的內(nèi)部相同,則該方法返回“true”值,否則返回“false”值。
該類還可以進一步包含“Intersect(AnalysisRegionregionToIntersect)”方法,它將相關(guān)的AnalysisRegion對象從修剪為規(guī)定的分析區(qū)域。因此,生成的AnalysisRegion對象只會包含與規(guī)定的分析區(qū)域重疊或相交的區(qū)域。該類還包括名為“Intersect(Rectangle rectangle)”的方法,它將相關(guān)的AnalysisRegion對象修剪為規(guī)定的矩形。在此生成的AnalysisRegion對象只會包含與規(guī)定的分析區(qū)域重疊或相交的區(qū)域。它還可以包括名為“MakeEmpty()”的方法,它將相關(guān)AnalysisRegion對象初始化為空內(nèi)部,還包括名為“MakeInfinte()”的方法,它設(shè)定由相關(guān)的AnalysisRegion占據(jù)的區(qū)域為無限。它還可以包括多個方法,用于聯(lián)合或分離不同定義的區(qū)域,諸如名為“Union(AnalysisRegion regionToUnion)”的方法,它規(guī)定AnalysisRegion對象聯(lián)合或加入到相關(guān)的AnalysisRegion對象,還包括名為“Union(Rectangle rectangle)”的方法,它將規(guī)定的矩形與相關(guān)的AnalysisRegion對象聯(lián)合。使用該方法,矩形可以為相關(guān)的AnalysisRegion對象以坐標空間的形式被規(guī)定。當然,該類可以包括多個其它的方法,用于基于任何區(qū)域期望的定義而組合區(qū)域或從一個區(qū)域抽取另一個。
Ink Analysis API還可以有Recognition Result類。如許多先前討論的類,Recognition Result類可以包括一個或多個構(gòu)建器。例如,該類可以包括名為“RecognitionResult(Stream lattice)”的構(gòu)建器,它從給定的識別格子構(gòu)建Recognition Result對象。在本發(fā)明的各個示例中,識別格子是來自識別過程的結(jié)果的連續(xù)格式。該方法可以例如將識別格子規(guī)定為用于構(gòu)建相關(guān)的Recognition Result對象的位陣列。它還可以包括名為“RecognitionResult(ContextNode node)”的構(gòu)建器,它從給定的上下文節(jié)點構(gòu)建RecognitionResult類對象。它還可以包括名為“RecognitionResult(stringText,int StrokeCount)”的構(gòu)建器,它從規(guī)定的文本值構(gòu)建RecognitionResult對象,它接著與規(guī)定數(shù)目的筆畫相關(guān)聯(lián),且如果識別過程不與其它的對應(yīng)實際書寫墨水數(shù)據(jù)的識別值對應(yīng),它可以用于糾正。而且,該類還包括名為“RecognitionResult(RecognitionResult leftRecognitionResult,RecognitionResult rightRecognitionResult)”的構(gòu)建器,它通過將兩個現(xiàn)存的Recognition Results對象合并而構(gòu)建RecognitionResults對象。
Recognition Result類還可以包括一個或多個屬性,諸如名為“StrokeCollection StrokeCollection{get;}”的屬性,它提供表示在單個墨水對象內(nèi)包含的筆畫集合的筆畫索引陣列,還包括名為“RecognitionAlternate TopAlaternate{get;}”的屬性,它提供識別結(jié)果的最佳方案。該類還可以包括名為“RecognitionConfidenceRecognitionConfidence{get;}”的屬性,它提供了來自識別分析過程的當前結(jié)果的頂層方案選擇的機密級(例如高、中等、低),還包括名為“stringTopString{get;}”的屬性,它從識別分析過程返回分析結(jié)果的最佳結(jié)果字符串。
Recognition Results類還可以包括多個方法,諸如稱為“publicRecognitionAlternateCollectionGetAlternateCollectionFromSelection(selectionStart,selectionLength,maximumAlternates)”,它規(guī)定了來自識別分析過程的最佳分析結(jié)果的字符串內(nèi)選擇的方案集合。該方案的輸入?yún)?shù)可以包括例如一個值,它規(guī)定返回方案集合的文本選擇的開始,還包括一個值,它規(guī)定返回方案集合的最大數(shù)。該方法可以從識別結(jié)果的最佳字符串內(nèi)的選擇返回方案的RecognitionAlternateCollection集合。
Recognition Results類還可以進一步包括一方法,名為“ RecognitionResult Merge(RecognitionResult left,stringsepartor,RecognitionResult right)”。該方法可以用于從單個字符串建立新的RecognitionResult對象,生成平格子或鏈接在兩個現(xiàn)存RecognitionResult對象間的單個字符串。該類還可以包括名為“ModifyTopAlternate(RecognitionAlternate alternate)”的方法,它規(guī)定識別結(jié)果用已知的方案進行修改。在本發(fā)明的一些實施例中,缺省情況下,識別分析過程的結(jié)果的最佳結(jié)果字符串對應(yīng)頂層方案。然而,該方案可以用于規(guī)定除了用于識別分析結(jié)果內(nèi)的頂層方案以外的方案。如果新的頂層方案導致與先前一個不同的分段,則ModifyTopAlternate方法會自動地更新上下文節(jié)點以反映改變。值得注意的是,為了獲得可以用于修改識別結(jié)果的方案,該方法調(diào)用GetAlternatesFromSelection方法,如下詳述。該類還可以有名為“StreamSave()”的方法,它持久地將相關(guān)的RecognitionResults對象維持在識別格子的形式。識別格子是用于表示來自識別過程的結(jié)果的連續(xù)格式。
Ink Analysis API還有Analysis Options枚舉類型。該類型可以包含一個或多個字段,它們規(guī)定墨水數(shù)據(jù)如何由分析過程分析,諸如名為“constAnalysisOptions Default”的字段,它啟用所有用于分析過程的可用選項。該字段可以例如啟用文本識別、表格使用、列表使用、注解使用、連接符和包含使用以及中間結(jié)果的使用。該類型還可以包括名為“const AnalysisOptionsEnableAnnotations”的字段,它啟用并禁用注解的檢測,還包括名為“constAnalysisOptions EnableConnectorsAndContainers”的字段,它啟用并禁用連接符和包含的檢測,該類型還包括“const AnalysisOptionsEnableintermediateResults”的字段,啟用并禁用分析結(jié)果返回到使用不同、連續(xù)分析過程間的軟件應(yīng)用程序1701(例如在語義分析過程和相繼的識別過程間)。該類型還可以有名為“const AnalysisOptions EnableLists”的字段,它啟用和禁用列表的檢測,還包括名為“const AnalysisOptionsEnableTalbes”的字段,它啟用并禁用表格的檢測。該枚舉的類型可以進一步包括名為“const AnalysisOptions EnableTextRecognition”的字段,它啟用并禁用文本識別分析過程。然而,值得注意的是,如果附加的分析過程可用(或同一分析過程的不同版本),則該類型可以相應(yīng)地包括附加的AnalysisOptions。
另外,Ink Analysis API包括AnalysisResultsEventArgs類。該類可以有“public AnalysisResultsEventArgs()”的構(gòu)建器,當喚醒AnalysisResults事件時,它建立包含分析結(jié)果的數(shù)據(jù)結(jié)構(gòu)并被返回到軟件應(yīng)用程序1701。該類還可以包含名為“InkAnalyzer InkAnalyzer{get;}”的屬性,它標識實現(xiàn)分析過程的InkAnalyzer對象。
API還可以有Line類,它與一些類型的操作系統(tǒng)一起時會有用,該種操作系統(tǒng)識別標識幾何行的“Line”對象的使用。該類還可以包括構(gòu)建器,諸如名為“public Line(Point beginPoint,Point endPoint)”的構(gòu)建器,它創(chuàng)建Line對象。該類還可以包括多個屬性,諸如名為“public PointBeginPoint{get;set;}”的屬性,它表示行對象的開始點,以及名為“publicPoint EndPoint{get;set;}”的屬性,它表示行對象的結(jié)束點。
除了這些類以外,Ink Analysis API還可以包含Recognition Alternate類。該類可以包含表示對與識別器的字典比較的墨水的分段可能的單詞匹配的元素。例如,該類可以包括名為“Line Ascender{get;}”,它提供了存在在單行上(用兩點表示的行)的RecognitionAlternate對象的上升行,該類還包括名為“public Line Baseline{get;}”的屬性,它提供存在在單行上的RecognitionAlternate對象的基線,還包括名為“Line Descender{get;}”的屬性,它提供了存在在單行上的RecognitionAlternate對象的下降行。該類還包括名為“RecognitionResult Extract{get}”的屬性,它提供給當前RecognitionAlternate對象一RecognitionResults對象。該屬性可以用于例如從包含一個單詞的行的RecognitionResult對象中抽取該單詞的RecognitionResult對象。
它還可以包括名為“Line Midline{get;}”的屬性,它提供存在在單行上的RecognitionAlternate對象的中線,還包括名為“StrokeCollectionStrokes{get;}”的屬性,它提供包含在墨水對象內(nèi)的筆畫的集合(即它提供表示與RecognitionResult相關(guān)聯(lián)的筆畫的StrokeCollection),還包括名為“StrokeCollection[]StrokesArray{get;}”的屬性,它提供了包含在一個或多個墨水對象內(nèi)的筆畫集合,表示與RecognitionResult相關(guān)聯(lián)的筆畫。該類還可以包括名為“RecognitionConfidence RecognitionConfidenc{get;}”的屬性,它提供識別過程在確定RecognitionAlternate對象或表示的識別中的機密級(例如高、中等或低)。對于非行節(jié)點,返回相關(guān)的上下文節(jié)點的子節(jié)點的最低RecognitionConfidence。它還可以包含名為“stringRecognizedString{get;}”的屬性,它規(guī)定方案的結(jié)果字符串。因此,對于在單詞上下文節(jié)點上的任何上下文節(jié)點,結(jié)果字符串用該方法被鏈接。例如,行節(jié)點會包含結(jié)果字符串,它接著包含所有其子節(jié)點或單詞節(jié)點的結(jié)果。段落節(jié)點然后會包含包含其所有子節(jié)點或行節(jié)點的結(jié)果的結(jié)果字符串。
Recognition Alternate類還可以包含一個或多個方法,它們包括例如名為“StrokeCollection[]GetStrokesArrayFromTextRange(intselectionstart,int selectionlength)”的屬性,它規(guī)定來自對應(yīng)已知文本范圍的每個墨水對象的StrokeCollection。該類還可以包含名為“StrokeCollection[]GetStrokesArrayFromTextRange(StrokeCollection[]strokesArray)”的屬性,它規(guī)定包含筆畫的已知輸入集合的筆畫的最小集合,且識別器為此提供方案。更特別地是,筆畫由墨水對象的陣列被返回,每個包含集合的筆畫索引陣列。值得注意的是,由該方法返回的墨水筆畫集合可以匹配輸入集合,或如果輸入集合只匹配包括所有輸入筆畫的最小識別結(jié)果的一部分,則它可以更大。該類還可以進一步包括名為“StrokeCollection[]GetStrokesArrayFromTextRange(StrokeCollection strokes)”的方法,它規(guī)定包含已知筆畫輸入集合的最小筆畫集合,且識別器為此提供方案,該類還包括一方法名為“StrokeCollection GetStrokesArrayFromTextRange(intselectionstart,int selectionlength)”,它規(guī)定對應(yīng)已知文本范圍的StrokeCollection。
該類還可以包括名為“void GetTextRangeFromStrokes(ref intselectionstart,ref int selectionend,StrokeCollection strokes)”的方法,它規(guī)定識別的文本的最小范圍,為此識別器可以返回包含已知筆畫集合的方案,該類還包括名為“void GetTextRangeFromStrokes(ref intselectionstart,ref int selectionend,StrokeCollection[]strokesarray)”的方法,它規(guī)定識別的文本的最小范圍,為此識別器可以返回包含已知筆畫集合的方案。它還有名為“RecognitionAlternateCollectionSplitWithConstantPropertyValue(GUID propetyyType)”的方法,它返回方案的集合,它們是在其上該方法被調(diào)用的方案的分割。集合內(nèi)的每個方案包含相鄰的識別分段,這些分段對于傳遞到方法內(nèi)的屬性有相同的屬性值。例如,該方法可以用于獲得方案,這些方案通過識別結(jié)果內(nèi)的機密級(高、中等或低)的邊界、行邊界或分段邊界分割原始方案。它還可以進一步包括名為“byte[]GetPropertyValue(GUID propertyType”的方法,它規(guī)定方案的已知屬性值,諸如方案內(nèi)識別器的機密。然而不是所有的識別分析過程會為所有的屬性類型提供值。因此,該方法為相關(guān)的識別分析過程支持的類型提供數(shù)據(jù)。
Ink Analysis API還可以包括Recognition Alternate Collection類。如同許多上述的類,該類可以包括構(gòu)建器,名為“RecognitionAlternateCollection()”,用于創(chuàng)建RecognitionAlternateCollection對象。該類還可以包括多個屬性,諸如名為“Count{get;}”的屬性,它提供包含在方案識別值集合內(nèi)的對象或集合數(shù)目;名為“IsS ynchronized{get;}”的屬性,它提供一值,指定對方案識別值集合的訪問與軟件應(yīng)用程序1701同步(即“線程安全”);以及一屬性名為“SyncRoot{get;}”,它提供用于同步對方案識別值集合的訪問的對象。
該類還可以包括一個或多個方法,諸如名為“virtual void CopyTo(Arrayarray,int index)”的方法,它們將方案識別值的當前集合的所有元素復制到規(guī)定的一維陣列,開始于規(guī)定目的地陣列索引;名為“IenumeratorIemuerable.GetEnumerator()”的方法,它是Ienumberable的標準實現(xiàn),它使得調(diào)用者能為每個使用以進行構(gòu)建,以對方案識別值集合內(nèi)的每個RecognitionAlternate進行枚舉。該類還可以包括名為“RecognitionAlternateCollectionEnumerator GetEnumerator()”的方法,它返回包含在識別方案值集合內(nèi)的所有對象的RecognitionAlternateCollectionEnumerator。該方法可以例如用于獲取在識別方案值的集合內(nèi)的每個對象。
Ink Analysis API可以附加地包括Recognition Confidence枚舉和Recognition Mode枚舉,其中的每個可以包含一個或多個與識別分析過程相關(guān)的字段。例如,Recognition Confidence類可以包含多個字段,諸如名為“Intermediate”的字段,指明識別分析過程是機密的,正確的結(jié)果在提供的方案識別值列表內(nèi);名為“Poor”的字段,它指明識別分析不是機密的,結(jié)果在提供的方案識別值列表內(nèi);以及名為“Strong”的字段,它指明識別分析過程是機密的,方案識別值內(nèi)的最佳方案是正確的。
類似地,Recognition Mode類可以包含字段,這些字段規(guī)定識別分析過程如何解釋電子墨水數(shù)據(jù),因此確定識別結(jié)果字符串。例如,該類可以包括名為“Coerce”的字段,它規(guī)定識別分析過程基于為上下文規(guī)定的仿真陳述而強迫識別結(jié)果;以及名為“Line”的字段,它規(guī)定識別分析過程將電子墨水數(shù)據(jù)作為單行處理。該類還可以包括名為“None”的字段,它規(guī)定識別分析過程不應(yīng)用識別模式,該類還包括名為“Segment”的字段,它規(guī)定識別分析過程將電子墨水數(shù)據(jù)作為形成單個單詞或字符處理。而且,該類還可以包括名為“TopInkBreaksOnly”的字段,它禁用多個分段。
而且,Ink Analysis API可以包括Context Link類,該類定義可以被鏈接在一起的兩個上下文節(jié)點。ContextLink節(jié)點本身表示哪兩個上下文節(jié)點被鏈接、鏈接的方向和鏈接的類型。該類還可以包括名為“ContextNodeSourceNode{get;}”的屬性,它規(guī)定正在從另一上下文節(jié)點被鏈接的源上下文節(jié)點;名為“ContextLinkType LinkType{get;}”的屬性,它規(guī)定在源和目的地上下文節(jié)點間存在的鏈接關(guān)系類型;以及名為“CustomLinkType{get;}”的屬性,它規(guī)定使用用戶鏈接。該情況發(fā)生在當應(yīng)用程序決定使用Ink AnalyzerAPI的鏈接系統(tǒng)以表示超出API能識別的特定應(yīng)用程序的鏈接。
該類還可以包括名為“ContextNode DestinationNode{get;}”的屬性,它規(guī)定正在從另一上下文節(jié)點被鏈接的目的地上下文節(jié)點。該類有兩個可用的構(gòu)建器,它們建立在現(xiàn)存源和目的地上下文節(jié)點間的關(guān)系。
該類還可以包括名為“ContextLinkType enum”的枚舉,它定義兩個上下文節(jié)點共享的關(guān)系類型。這些多種鏈接類型可以包括例如“AnchorsTo”類型,它描述一個節(jié)點錨定到另一節(jié)點。兩個節(jié)點基于語義分析結(jié)果可以使用SourceNode或DestinationNode屬性。鏈接類型還可以包括類型“Contains”,它描述一個節(jié)點包含另一節(jié)點。有該關(guān)系情況下,該包含節(jié)點可以被稱為SourceNode,而被包含的節(jié)點可以被稱為DestinationNode。鏈接類型可以進一步包括“PointsTo”類型,它描述一個節(jié)點指向另一節(jié)點。對于該關(guān)系,進行指向的節(jié)點被稱為SourceNode,而被指向的節(jié)點被稱為DestinationNode。而且,鏈接類型可以有“PointsFrom”類型,它描述一個節(jié)點指自其它節(jié)點。在該關(guān)系中,從其它節(jié)點指開的節(jié)點可以被稱為SourceNode,而被指向的節(jié)點可以被稱為DestinationNode。
鏈接類型可以附加地包括“SpansHorizontally”類型,它描述一個節(jié)點從另一節(jié)點的水平長度上跨越,還可以包括“SpansVertically”類型,它描述一個節(jié)點從另一節(jié)點的垂直長度上跨越。對于這些類型,一般寫在最后的覆蓋其它節(jié)點的節(jié)點(刪除、加下劃線、邊條)被稱為SourceNode,而正在被跨越的節(jié)點可以被稱為DestinationNode。鏈接類型還可以包括“Custom”類型,它描述使用用戶鏈接類型。當使用該值時,在ContextLink對象上的屬性“CustomLinkType”可以提供關(guān)于該鏈路目的細節(jié)。
相應(yīng)地,Ink Analyzer API提供多個函數(shù)以及服務(wù),用于異步地分析文檔內(nèi)的電子墨水,且然后相繼將分析過程的結(jié)果與文檔的當前狀態(tài)相符,如上詳述。另外,可以理解的是,上述的多個類可以應(yīng)用到多個操作系統(tǒng)和環(huán)境,諸如微軟Windows操作環(huán)境、微軟COM操作環(huán)境、Unix或Linux操作環(huán)境,或其它任何合適的計算機操作環(huán)境。而且,可以理解的是,根據(jù)本發(fā)明的多個實現(xiàn)的應(yīng)用編程結(jié)構(gòu)可以省略上述的一個或多個類分量,或可以包括附加的分量以提供期望的服務(wù)或功能。
協(xié)調(diào)如上詳述,本發(fā)明的多個實施例使得軟件應(yīng)用程序1701繼續(xù)操作,同時文檔1703內(nèi)的未經(jīng)分析的電子墨水由后臺分析過程進行分析。因為這樣,軟件應(yīng)用程序1701可以以多種與分析過程的結(jié)果矛盾的方式修改文檔1703。例如,軟件應(yīng)用程序1701可能在文檔1703內(nèi)輸入新的電子墨水數(shù)據(jù)1705,或從文檔1703刪除存在的電子墨水數(shù)據(jù)1705。而且,軟件應(yīng)用程序1701可以編輯存在的電子墨水數(shù)據(jù)1705,諸如通過移動存在的電子墨水數(shù)據(jù)1705的位置或改變存在的電子墨水數(shù)據(jù)1705的位置。而且,軟件應(yīng)用程序1705可以以影響存在的電子墨水數(shù)據(jù)1705的方式加入、刪除或修改非墨水文檔元素1707。例如,軟件應(yīng)用程序1701可以刪除已經(jīng)用電子墨水數(shù)據(jù)1705加注的打字文本。
軟件應(yīng)用程序1701可以附加地“牽制”存在的電子墨水數(shù)據(jù)1705,以禁止分析過程對其進行修改。例如,如果用戶手工地規(guī)定墨水筆畫組的布局或分類,則軟件應(yīng)用程序1701可以指定這些墨水筆畫留在該特定布局內(nèi)或與該分類在一起,而不管語義分析過程生成的結(jié)果。類似地,用戶可以為墨水筆畫組規(guī)定特定的識別結(jié)果,而不管識別過程生成的結(jié)果。
根據(jù)本發(fā)明的不同實現(xiàn),可以使用多種類型的牽制。例如,墨水分析工具1901可以允許軟件應(yīng)用程序1701“硬”牽制墨水。這樣安排后,沒有墨水筆畫可以被加入任何經(jīng)牽制的節(jié)點以下的葉子節(jié)點,沒有筆畫可以從任何經(jīng)牽制的節(jié)點以下的葉子節(jié)點中被移去,不允許加入或移去子節(jié)點,且不允許在任何經(jīng)牽制的節(jié)點以下的節(jié)點更換父節(jié)點?;蛘呋蛄硗猓治龉ぞ?901可以允許對最新的筆畫“硬”牽制,這使得最新的筆畫在規(guī)定的條件下被加入,還可以僅指筆畫從任何經(jīng)牽制的節(jié)點以下的葉子節(jié)點中被移去,禁止加入或移去子節(jié)點,并禁止任何經(jīng)牽制的節(jié)點以下的節(jié)點更換父節(jié)點。而且,模式分析工具1901可以允許軟件應(yīng)用程序1701或者或另外地“軟”牽制墨水。這樣安排后,沒有筆畫可以從任何經(jīng)牽制的節(jié)點以下的葉子節(jié)點中被移去,由特定的規(guī)則允許加入筆畫(這使得能加入最近的筆畫),并允許重組、加入并移去子節(jié)點。值得注意的是可以移去牽制,且一旦移去牽制,則先前被牽制的節(jié)點和其子節(jié)點可以被認為是“臟的”即需要重新分析。
而且,根據(jù)本發(fā)明的多個示例的墨水過程可以使用多個分析過程,如上所述。相應(yīng)地,早先的分析過程結(jié)果可以修改電子墨水數(shù)據(jù)1705,而同時正在執(zhí)行第二相繼的分析過程。相應(yīng)地,分析過程的結(jié)果必須與文檔1703的當前狀態(tài)相符,使得只有那些對于文檔1703的當前狀態(tài)有效的結(jié)果被應(yīng)用到其分析上下文對象1709。即當前分析上下文對象1709(以及在一些實例中,分析過程的結(jié)果)經(jīng)修改以略去分析過程的結(jié)果和文檔1703的當前狀態(tài)間的不符或“沖突”。
值得注意的是,為了使協(xié)調(diào)過程的結(jié)果有效,文檔1703的狀態(tài)在協(xié)調(diào)過程中不應(yīng)改變。協(xié)調(diào)過程因此可以使用軟件應(yīng)用程序1701在其上運行的主線程而經(jīng)實現(xiàn),且執(zhí)行協(xié)調(diào)過程會暫時停止軟件應(yīng)用程序1701的操作。或者,其它的技術(shù),諸如數(shù)據(jù)結(jié)構(gòu)鎖定,可以被用于保證文檔1703的狀態(tài)在協(xié)調(diào)過程中不改變。相應(yīng)地,期望盡快實現(xiàn)協(xié)調(diào)過程,以防止用戶對于軟件應(yīng)用程序1701的性能感到失望。協(xié)調(diào)過程的另一考慮是其對于在分開的后臺分析線程上運行的分析過程的性能的影響。如果當前分析上下文對象1709(即反映文檔1703的當前狀態(tài)的分析上下文對象1709)和分析結(jié)果的不符定義太寬泛,則大量的電子墨水不必要地要經(jīng)重新分析。當然,仍然可以在協(xié)調(diào)期間使用其它其它保護文檔完整性的方法,而不偏離本發(fā)明。
在本發(fā)明的多個示例中,分析過程和相符過程可以協(xié)調(diào)以下的一個或多個約定以改善相符過程的有效性和方便性。第一,分析過程可以盡可能地重新使用獨立于文檔的分析上下文對象1903內(nèi)的文檔元素的節(jié)點。即通過為文檔元素建立新的不相關(guān)的節(jié)點可以避免沖突。另外,相符過程應(yīng)遵守軟件應(yīng)用程序1701指定的“牽制”。雖然該分析過程一般協(xié)調(diào)軟件應(yīng)用程序1701的牽制指定,但軟件應(yīng)用程序1701可以牽制電子墨水數(shù)據(jù)1705,而同時執(zhí)行分析過程。另外,協(xié)調(diào)過程應(yīng)保證在完成協(xié)調(diào)過程后在當前分析上下文節(jié)點1709內(nèi)不應(yīng)留有空節(jié)點。然而值得注意的是根據(jù)本發(fā)明的其它實現(xiàn),可以略去一個或多個這些約定,或不遵守這些約定。例如,本發(fā)明的一些實現(xiàn)可以允許分析對象1709包含空節(jié)點。
除了這些約定外,相符過程一般必須協(xié)調(diào)分析上下文對象1709規(guī)定的結(jié)構(gòu)規(guī)則。例如,在本發(fā)明的一些實現(xiàn)中,分析上下文對象1709不允許文檔元素的節(jié)點被刪除,除非它沒有子節(jié)點。
如先前所述,當分析過程對獨立于文檔的分析上下文對象1903進行改變時發(fā)生沖突,該對象在某些方面與在初始分析過程后對分析上下文對象1709進行的改變沖突。沖突可以被分為兩種類型強制沖突和任意沖突。
強制沖突發(fā)生在當不可能由分析過程將對獨立于文檔的分析上下文對象1903進行改變?yōu)槲臋n1703的當前狀態(tài)應(yīng)用到分析上下文對象1709時。強制沖突會發(fā)生在例如當軟件應(yīng)用程序1701已經(jīng)“強制”或固定了分析上下文對象1709內(nèi)的節(jié)點,且分析過程已經(jīng)改變獨立于文檔的分析上下文對象1903內(nèi)的對應(yīng)節(jié)點時。強制沖突還發(fā)生在當分析過程已經(jīng)對獨立于文檔的分析上下文對象1903的節(jié)點進行了任何類型的改變,但軟件應(yīng)用程序1701已經(jīng)從分析上下文對象1709刪除了對應(yīng)的節(jié)點,且當軟件應(yīng)用程序1701已經(jīng)向分析上下文對象1709內(nèi)的節(jié)點加入筆畫或子節(jié)點時,當分析過程已經(jīng)刪除獨立于文檔的分析上下文對象1903內(nèi)的對應(yīng)節(jié)點時。另外,強制沖突發(fā)生在當分析過程重新安排或建立了獨立于文檔的分析上下文對象1903內(nèi)對應(yīng)節(jié)點的鏈接時,軟件應(yīng)用程序1701已經(jīng)刪除了分析上下文對象1709內(nèi)的節(jié)點的時候。
任意沖突發(fā)生在當軟件應(yīng)用程序1701改變了分析上下文對象1709內(nèi)的值,而該值與分析過程在獨立于文檔的分析上下文對象1903內(nèi)改變的值相關(guān),但分析上下文對象1709的接口的牽制限制、元素重新使用限制以及固有限制仍會允許應(yīng)用分析過程對分析上下文對象1709的改變。任意沖突仍可以作為改變應(yīng)用于分析上下文對象1709或者避免。另外,協(xié)調(diào)過程可以簡單地忽略一些一起的任意沖突類型。
任意沖突的圖形示例發(fā)生在當分析上下文對象1709和獨立于文檔的分析上下文對象1903內(nèi)的原始節(jié)點有墨水筆畫A和B的子節(jié)點A和B時。軟件應(yīng)用程序1701然后可以在分析上下文對象1709內(nèi)為墨水筆畫C加入第三子節(jié)點C,而同時分析過程向獨立于文檔的分析上下文對象1903加入墨水筆畫D的第三子節(jié)點D。在本發(fā)明的多個實施例中,協(xié)調(diào)過程可以在分析上下文對象1709中基于分析結(jié)果將子節(jié)點D加入父節(jié)點。雖然在分析上下文對象1709內(nèi)的父節(jié)點的改變不被禁止,但是它仍然以一種軟件應(yīng)用程序1701不期望的方式改變了父節(jié)點的特征。例如,與父節(jié)點相關(guān)聯(lián)的墨水可以相繼地被認為經(jīng)分析,且可能不會經(jīng)重新分析以考慮墨水C對墨水筆畫組的影響。另外,父節(jié)點的識別結(jié)果現(xiàn)在被稱為錯誤的子節(jié)點或筆畫,且它不會再次被糾正。
相應(yīng)地,本發(fā)明的多個示例基于分析過程的結(jié)果,在更新分析上下文對象1709時,不會為任意沖突應(yīng)用改變。雖然該準則基于任意沖突,可以要求附加的處理以標識并封阻改變,但該準則相對而言比較容易實現(xiàn)且容易維持。當然,本發(fā)明的其它示例可以根據(jù)其它準則實現(xiàn)對應(yīng)任意沖突的改變。更特定地是,這些其它的示例可以實現(xiàn)來自任意沖突的改變,這些改變不建立分析上下文對象1709內(nèi)持久的邏輯不一致關(guān)系。
值得注意的是沖突可以有傳遞效應(yīng),因為一個沖突會創(chuàng)建另一個。例如,分析過程可以為行建立節(jié)點L,然后為作為節(jié)點L的子節(jié)點的單詞建立節(jié)點W。如果建立節(jié)點L由于任何類型的沖突而未應(yīng)用到分析上下文對象1709,,則節(jié)點W的創(chuàng)建將會是強制沖突。
本發(fā)明的多個示例可以使用基于對數(shù)的方法以使得分析過程的結(jié)果與文檔1703的當前狀態(tài)相協(xié)調(diào)。在該基于對數(shù)的方法中,獨立于文檔的分析上下文對象1903包括由分析過程對獨立于文檔的分析上下文對象1903進行的改變的記錄。該記錄可以是改變記錄列表。每個改變記錄然后可以包括進行的改變的類型(例如通過標識被調(diào)用以改變獨立于文檔的分析上下文對象1903的方法)、改變的文檔元素(通過標識例如對其調(diào)用方法的獨立于文檔的分析上下文對象1903內(nèi)的節(jié)點)以及任何為方法呼叫重建自變量需要的信息。有利地,由于獨立于文檔的分析上下文對象1903由墨水分析工具1901和分析過程實現(xiàn),則改變記錄對于軟件應(yīng)用程序1701可以是不可見的(雖然記錄或者可以向應(yīng)用程序1701顯示,如果需要的話)。
為了使用改變記錄方法執(zhí)行相符過程,墨水分析工具1901檢查按事件順序的改變的每個改變記錄。即墨水分析工具1901標識對獨立于文檔的分析上下文對象1903進行的改變。對于每個改變,墨水分析工具1901可以實現(xiàn)圖27內(nèi)說明的過程。首先,在步驟2701,墨水分析工具1901試圖訪問需要應(yīng)用改變的當前分析上下文對象1709內(nèi)的對應(yīng)節(jié)點。值得注意的是如果軟件應(yīng)用程序1701從分析上下文對象1709刪除了一個或多個必須的節(jié)點,則該獲取步驟可能失敗,導致強制沖突。
下一步,在步驟2703,墨水分析工具1901確定改變是否建立了強制或任意沖突。以下將詳細解釋確定的過程。在步驟2705,如果墨水分析工具建立強制沖突或任意沖突因為相符過程的準則被禁止,則墨水分析工具1901或者進行改變,或者禁止改變。例如,如果改變創(chuàng)建強制沖突或相符過程的準則禁止任意沖突,則墨水分析工具1901可能封阻在分析上下文對象1709內(nèi)的節(jié)點的改變,該分析上下文對象標識進行改變的文檔1703的對應(yīng)區(qū)域。如果在另一方面,應(yīng)用改變,則墨水分析工具1901可以調(diào)用合適的方法以對分析上下文對象1709內(nèi)的必要節(jié)點進行期望的改變。
如果分析過程向分析上下文對象1709加入新的元素節(jié)點,但不能成功將筆畫節(jié)點移到新節(jié)點,則分析過程不會在筆畫節(jié)點已經(jīng)被成功地移到新節(jié)點的假設(shè)下試圖刪除元素節(jié)點。因此,在獨立于文檔的分析上下文對象1903內(nèi)會有一個元素節(jié)點,其中分析上下文對象1903對應(yīng)當前分析上下文對象1709的空節(jié)點。相應(yīng)地,一旦處理了所有分析上下文對象1709的改變,在步驟2707內(nèi),墨水分析工具1901預覽獨立于文檔的分析上下文對象1903以刪除分析上下文對象1709內(nèi)的任何“空”節(jié)點,其中分析上下文對象1709對應(yīng)獨立于文檔的分析上下文對象1903的節(jié)點。該空節(jié)點刪除步驟是可選的,可以被略去,而不偏離本發(fā)明。
值得注意的是,獨立于文檔的分析上下文對象1903不應(yīng)包含任何空節(jié)點,且相符過程應(yīng)禁止在獨立于文檔的分析上下文對象1903內(nèi)創(chuàng)建空節(jié)點。還值得注意的是該步驟不會試圖刪除分析上下文對象1709的根節(jié)點,即使它例外地是一個空節(jié)點。最后,在步驟2709內(nèi),墨水分析工具1901會向軟件應(yīng)用程序1701標識獨立于文檔分析上下文對象1903內(nèi)的分析結(jié)果和當前分析上下文對象1709間的任何沖突,使得軟件應(yīng)用程序1701可以包括受到相繼分析過程內(nèi)的沖突影響的文檔1703的區(qū)域。
現(xiàn)在回到步驟2703內(nèi)的沖突檢測,一旦訪問了分析上下文對象1709內(nèi)的所有節(jié)點,其中分析上下文對象1709對應(yīng)獨立于文檔的分析上下文對象1903內(nèi)的改變,則分析上下文對象1709內(nèi)的每個節(jié)點的所有其它可能的強制沖突可以靜態(tài)被檢測到(或者,可以為每個節(jié)點檢測到強制沖突)。更特別的是,強制沖突可以基于分析上下文對象1709的接口指定的規(guī)則而被檢測到。
然而任意沖突,沒有關(guān)于文檔1703的附加狀態(tài)信息一般不能被標識,因為這些改變沒有分析上下文對象1709的接口的授權(quán),相反這些改變是基于任意選擇,任意選擇是關(guān)于當同時影響到分析上下文對象1709內(nèi)的相同節(jié)點時,傾向于軟件應(yīng)用程序1701進行的改變,而不是分析過程進行的改變。這些沖突相反可以通過將當前分析上下文對象1709與獨立于文檔的分析上下文對象1903的原始版本相比較而被檢測到,以確定在分析上下文對象1709內(nèi)的哪些節(jié)點為軟件應(yīng)用程序1701改變。
例如,相符準則可以定義從父節(jié)點由軟件應(yīng)用程序1701加入或刪除子筆畫節(jié)點對于該父節(jié)點是任意沖突。為了確定該種改變的發(fā)生,墨水分析工具1901可以預覽取決于當前分析上下文對象1709內(nèi)的節(jié)點的子筆畫節(jié)點,并將其數(shù)目和Guid(或其它唯一的標識符)與子筆畫節(jié)點相比較,該子筆畫節(jié)點取決于獨立于文檔的分析上下文對象1903的原始版本內(nèi)的對應(yīng)節(jié)點。如果子筆畫節(jié)點匹配這些方面(以及任何其它期望的方面),則墨水分析工具1901可以對分析上下文對象1709內(nèi)的父節(jié)點應(yīng)用這些分析過程進行的改變。
繼續(xù)該示例,記錄項內(nèi)的下一改變可以包括另一筆畫節(jié)點,該節(jié)點被移動以依附于獨立于文檔的分析上下文對象1903內(nèi)的父節(jié)點。如果該改變沒有強制沖突,則墨水分析工具1901被允許對分析上下文對象1709進行對應(yīng)的改變。當墨水分析工具1901檢查獨立于文檔的分析上下文對象1903的原始版本以確定是否存在任意沖突,然而,其結(jié)論是當前分析上下文對象1709內(nèi)的父節(jié)點比獨立于文檔的分析上下文對象1903多一個或多個非獨立的筆畫節(jié)點,所以它會錯誤地確定任意沖突存在(即它會基于它進行的改變而確定存在沖突)。
相應(yīng)地,基于記錄的相符過程應(yīng)排除先前由相符進行的改變,該相符基于當前分析上下文對象1709和獨立于文檔的分析上下文對象的原始版本間的比較。在本發(fā)明的多個示例中,在檢查任何改變列表項前,可以通過將當前分析上下文對象1709內(nèi)的所有節(jié)點于其在獨立于文檔的分析上下文對象1903的原始版本內(nèi)的對應(yīng)節(jié)點相比較而進行排除,并保留沖突的節(jié)點列表。
或者或另外,本發(fā)明的多個示例可以維持當前分析上下文對象1709內(nèi)的元素的緩沖,該對象1709對應(yīng)獨立于文檔的分析上下文對象內(nèi)的元素,該分析上下文對象帶有在任何時候獲取對應(yīng)元素時使用的分析結(jié)果。不存在初步的通過(pass),但在確定對應(yīng)的元素沒有任意沖突時第一次填充緩沖??蛇x地,緩沖還可以跟蹤結(jié)果內(nèi)的哪些元素有任意沖突。當改變記錄很短時,該方法的性能優(yōu)于任意沖突—找到通過(pass)方法,但如果帶有分析結(jié)果的獨立于文檔的分析上下文對象1903包含許多節(jié)點,則該方法性能較差。且該方法不比其它方法復雜。
值得注意的是,緩沖內(nèi)的元素的父上下文節(jié)點應(yīng)經(jīng)緩沖。更特別的是,對于子上下文節(jié)點的改變會被認為是對其父上下文節(jié)點的屬性的改變。因此,存儲在緩沖內(nèi)的上下文節(jié)點的父上下文節(jié)點還需要對軟件應(yīng)用程序1701在改點進行的改變重新評估。為緩沖內(nèi)的每個上下文節(jié)點緩沖父節(jié)點需要在樹上向上經(jīng)重復(例如從父節(jié)點到祖父節(jié)點到曾祖父節(jié)點)直到通過根節(jié)點或直到檢測到改變。然而在許多情況下,該重復只是幾個節(jié)點,因為樹一般不會很深。
值得注意的是,在本發(fā)明的多個示例中,獨立于文檔的分析上下文對象1903的原始版本只用于檢測任意沖突。如果任意沖突的檢測在本發(fā)明示例中是不必要的,則可以刪去獨立于文檔的分析上下文對象1903的原始版本和對應(yīng)的元素緩沖。該“基于記錄”的方法的維持要比以下描述的“基于比較”的方法要簡單,因為它需要更少的緩沖以確定分析過程進行了何種改變,而且獨立于文檔的分析上下文對象1903(諸如“刪除節(jié)點”或“建立節(jié)點”是被分開處理的),所以加入操作的新類型不會影響其它操作。
不使用“基于記錄”的技術(shù)用于將分析結(jié)果與文檔1703的當前狀態(tài)相比較,取而代之本發(fā)明的多個示例可以使用“基于比較”的方法用于相符?;诒容^方法的主要特征是不保留對獨立于文檔的分析上下文對象1903進行的改變的記錄,所以該技術(shù)不收集關(guān)于分析過程干了什么的信息,而是將包含分析結(jié)果的獨立于文檔的上下文對象1903與獨立于文檔的分析上下文對象1903的原始版本相比較。因此,使用該方法,獨立于文檔的分析上下文對象1903的原始版本總是需要的,這與關(guān)于任意沖突的判斷無關(guān)。
使用該方法,墨水分析工具1901首先建立筆畫地圖。即對于獨立于文檔的分析上下文對象1903的原始版本內(nèi)的每個墨水葉子節(jié)點,如果在當前分析上下文對象1709內(nèi)有對應(yīng)節(jié)點,則葉子節(jié)點被加入哈希表格(或其它的合適數(shù)據(jù)結(jié)構(gòu))。因此,哈希表格將在獨立于文檔的分析上下文對象1903內(nèi)的筆畫GUID(或其它唯一的節(jié)點標識符)映射到當前分析上下文對象1709內(nèi)的葉子節(jié)點引用。
下一步,墨水分析工具1901標識軟件應(yīng)用程序1701在分析上下文對象1709內(nèi)已經(jīng)改變的所有節(jié)點。這可以使用上述用于確定任意沖突的技術(shù)完成。對于獨立于文檔的分析上下文對象1903的原始版本內(nèi)的每個節(jié)點,如果在當前分析上下文對象1709內(nèi)有對應(yīng)的節(jié)點,且它在重要的方面不同于獨立于文檔的分析上下文對象1903的原始版本內(nèi)的節(jié)點,則墨水分析工具1901確定該節(jié)點已經(jīng)為應(yīng)用程序改變了,且是潛在的沖突。對該種節(jié)點的引用保留在對應(yīng)分析結(jié)果節(jié)點的第一列表和建立任意沖突的節(jié)點的第二列表中,這些分析結(jié)果節(jié)點不應(yīng)加入分析上下文對象1709(此后被稱為resultsNodesNotToAdd列表)。
對于獨立于文檔的分析上下文對象1903的原始版本內(nèi)的每個節(jié)點,墨水分析工具1901在帶有分析結(jié)果的獨立于文檔的分析上下文對象1903和當前的分析上下文對象1709內(nèi)查詢對應(yīng)的節(jié)點。對于分析上下文對象1709內(nèi)的每個節(jié)點,墨水分析工具1901確定軟件應(yīng)用程序1701是否刪除了該節(jié)點。該種節(jié)點存在于獨立于文檔的分析上下文對象1903的原始版本內(nèi)。帶有分析結(jié)果的獨立于文檔的分析上下文對象1903內(nèi)的對應(yīng)節(jié)點被加入resultsNodesNotToAdd列表,如果它存在的話。
下一步,墨水分析工具1901確定分析過程是否從獨立于文檔的分析上下文對象1903中刪除了節(jié)點。當在分析上下文對象1709內(nèi)有對應(yīng)節(jié)點,且它沒有改變,但在獨立于文檔的分析上下文對象1903內(nèi)沒有對應(yīng)節(jié)點時可以被檢測到。分析過程刪除的節(jié)點可以被保留在被刪除的節(jié)點列表內(nèi)。該種節(jié)點不加入當前的分析上下文對象1709,但它不進入resultsNodesNotToAdd列表,因為在帶有分析結(jié)果的獨立于文檔的分析上下文1903中沒有對應(yīng)的節(jié)點。
如果軟件應(yīng)用程序1701沒有刪除或改變節(jié)點,且分析過程沒有刪除節(jié)點,則墨水分析工具1901可以確定分析過程是否改變了節(jié)點。如上描述的用于檢測軟件應(yīng)用程序1701進行的改變的相同技術(shù)可以用于檢測分析過程進行的改變。值得注意的是分析過程進行的改變被加入resultsNodesNotToAdd列表,且改變通過調(diào)用在分析上下文對象1709內(nèi)的節(jié)點上的合適方法而經(jīng)傳播。如果軟件應(yīng)用程序1701或分析過程都沒有改變或刪除節(jié)點,則節(jié)點不發(fā)生任何情況,且墨水分析工具1901將節(jié)點加入到resultsNodesNotToAdd列表,因為節(jié)點存在于帶有分析結(jié)果的獨立于文檔的分析上下文對象1903內(nèi),且不被加入分析上下文對象1709內(nèi)。
下一步,對于帶有分析結(jié)果的獨立于文檔的分析上下文對象1903內(nèi)的每個節(jié)點,如果節(jié)點不在resultsNodesNotToAdd列表內(nèi),則墨水分析工具1901可以通過在分析上下文對象1709內(nèi)建立對應(yīng)的節(jié)點而傳播有分析過程進行的對節(jié)點的改變。遍歷分析結(jié)果內(nèi)的節(jié)點可以通過使用從上到下前序的方法實現(xiàn),使得父節(jié)點保證在子節(jié)點創(chuàng)建前被創(chuàng)建。
當在分析上下文對象1709內(nèi)創(chuàng)建新葉子節(jié)點時,任何于包含在分析結(jié)果內(nèi)的節(jié)點相關(guān)聯(lián)的墨水筆畫還可以從分析上下文對象1709內(nèi)的其它節(jié)點被移到新的節(jié)點。上述的筆畫地圖還可以被用于為移動筆畫標識源元素。如果源元素不存在(建立強制沖突)或如果源元素被包含在上述的任意沖突列表內(nèi),則墨水筆畫不被移動。為了避免對分析上下文對象1709不必要的調(diào)用,如果沒有至少一個非沖突的筆畫源節(jié)點,則該墨水分析工具1901可以避免調(diào)用方法以建立子上下文節(jié)點。對于非墨水葉子節(jié)點也實現(xiàn)相同的筆畫源檢查,使得不建立行的節(jié)點,直到例如至少一個行的組成單詞要包含至少一個成功被移動的筆畫。
其它的信息然后被應(yīng)用于新建立的節(jié)點,諸如識別格子。識別格子即使在一定筆畫不能被移動時也被應(yīng)用,建立應(yīng)用的(即不被封阻的)導致暫時邏輯不一致的任意沖突。然而,由于失敗的筆畫移動在分析上下文對象1709的部分的指定內(nèi)被反映,其中分析上下文對象1709對應(yīng)改變被封阻的文檔的區(qū)域,則不一致是暫時的,因為軟件應(yīng)用程序1701被建議重新分析被封阻的區(qū)域。
對于每個要從分析上下文對象1709刪除的節(jié)點,墨水分析工具1901列表檢查節(jié)點是否實際被刪除,且實現(xiàn)了所有其它的對分析上下文對象1709的編輯和加入操作。要被刪除的節(jié)點和實際沒有所有子節(jié)點的節(jié)點和筆畫從分析上下文對象1709中被刪除。一旦刪除了該節(jié)點,所有的父輩節(jié)點(直到但不包括根節(jié)點)被連續(xù)刪除直到遇到帶有剩余子節(jié)點的父輩節(jié)點。
最終墨水分析工具1901在帶有分析結(jié)果的獨立于文檔的分析上下文對象1903和分析上下文對象1709間的節(jié)點排序進行全局比較,以檢測并傳播分析過程對分析上下文對象1709進行的改變。然而值得注意的是,該比較忽略獨立于文檔的分析上下文對象1903的原始版本,這樣它沒有辦法檢測軟件應(yīng)用程序1701對排序進行的改變。下一步,對于在分析上下文對象1709內(nèi)有對應(yīng)節(jié)點的分析結(jié)果內(nèi)的每個包含節(jié)點,比較包含節(jié)點的子節(jié)點的排序。如果兩個包含節(jié)點有完全相同的子節(jié)點集合,則分析結(jié)果內(nèi)的排序被傳播到分析上下文對象1709,這是通過循環(huán)在分析結(jié)果內(nèi)的包含節(jié)點的子節(jié)點列表直到在分析上下文對象1709內(nèi)的包含節(jié)點列表內(nèi)的相同位置找到節(jié)點為止,該分析上下文對象1709沒有于分析結(jié)果內(nèi)的子節(jié)點相同的GUID(或其它類型的標識符)。當找到該種不匹配時,必須在分析上下文對象1709內(nèi)的子節(jié)點列表中進一步找到對應(yīng)節(jié)點。墨水分析工具1901然后搜索分析上下文對象1709內(nèi)的剩余子節(jié)點列表以找到該節(jié)點,并調(diào)用方法以移動子節(jié)點,為了糾正分析上下文對象1709內(nèi)的該節(jié)點的順序。墨水分析工具1901然后繼續(xù)在分析結(jié)果內(nèi)的節(jié)點的循環(huán)。
當然,對相同列表的假設(shè)不一定為真,因為分析列表或軟件應(yīng)用程序1701可以在兩個列表內(nèi)刪除或插入節(jié)點。“子列表映射器”對象用于模仿該假設(shè)為真,這是通過只包含公有元素的“經(jīng)修剪”的列表而實現(xiàn)的。上述的過程然后在經(jīng)映射的子節(jié)點列表上運行,且這些移動被轉(zhuǎn)換成實際索引和列表映射器對象的調(diào)用。
因此,根據(jù)上述的本發(fā)明的各個示例的協(xié)調(diào)技術(shù)使得能對文檔內(nèi)的當前文檔元素應(yīng)用分析過程的結(jié)果,即使文檔的內(nèi)容在分析過程開始后有所改變。協(xié)調(diào)技術(shù)因此使得文檔內(nèi)的電子墨水能于寄宿文檔的軟件應(yīng)用程序的操作異步地經(jīng)分析。另外,這些協(xié)調(diào)技術(shù)可以有利地為多個不同的軟件應(yīng)用程序使用,包括帶有現(xiàn)存、專有鎖定或其它同步策略的現(xiàn)存多線程軟件應(yīng)用程序。
被事件驅(qū)動的系統(tǒng)如上所述,本發(fā)明的多個示例通過復制獨立于文檔的分析上下文對象而建立文檔的狀態(tài)的“快照”,然后在寄宿文檔的軟件應(yīng)用程序繼續(xù)操作同時對獨立于文檔的分析上下文對象進行異步分析?;蛘?,本發(fā)明的各個示例可以居先使用獨立于文檔的分析上下文對象進行異步墨水分析。不同的是,本發(fā)明的這些示例可以使用密封的分量以存儲文檔的所有墨水和語義數(shù)據(jù)。更特別的是,本發(fā)明的這些示例識別對文檔進行的兩種類型的修改墨水事件,諸如加入、刪除或修改筆畫;以及結(jié)構(gòu)事件,諸如將筆畫組成單詞、加入語義節(jié)點或?qū)⑽谋咀R別結(jié)果于筆畫相聯(lián)系。每個事件包含為向外部收聽者完全描述事件需要的所有數(shù)據(jù)。有了這些“豐富”的事件,收聽者可以通過按接收順序運用這些事件而維持墨水對象完全一樣的副本。
圖28根據(jù)本發(fā)明的示例說明如何使用該安排的示例。如在該圖內(nèi)可見,應(yīng)用程序2801使用墨水分析工具2803。墨水分析工具2803為應(yīng)用程序2801維持墨水數(shù)據(jù)2805以及文檔結(jié)構(gòu)2807(例如諸如樹結(jié)構(gòu))。應(yīng)用程序還使用事件隊列2809、語義分析器過程2811和識別過程2817。語義分析器過程2811維持墨水數(shù)據(jù)2805的克隆2813和文檔結(jié)構(gòu)2807的克隆2815。類似地,識別過程2817維持墨水數(shù)據(jù)2805的克隆2819以及文檔結(jié)構(gòu)2807的克隆2821。
當應(yīng)用程序生成墨水數(shù)據(jù)時,它將墨水數(shù)據(jù)通過方法2823提供給墨水分析工具2803。作為響應(yīng),墨水分析工具2803生成對應(yīng)墨水數(shù)據(jù)內(nèi)的改變的事件、向每個事件加入標記并將期望的分析過程或多個定義為監(jiān)聽帶有特定標記的事件的分量。例如,所有用戶對墨水的改變可以用標記“UserChange”標記,且?guī)в性摌擞浀氖录?825響應(yīng)該改變被同時發(fā)送到事件隊列2809。在未來的一些點,語義分析器過程2811以及識別過程2817會從事件隊列2809獲取經(jīng)標記的事件。
第一分析過程(例如語義分析過程2811)會監(jiān)聽墨水分析工具2803發(fā)出的所有事件,并對帶有標記UserChange的事件進行響應(yīng)。第一分析過程然后會將事件規(guī)定的改變應(yīng)用到其墨水數(shù)據(jù)2813的內(nèi)部復本以及文檔數(shù)據(jù)2815、分析事件內(nèi)描述的數(shù)據(jù),然后創(chuàng)建并對尤其改變生成的帶有標記“PaserlChange”的事件2827進行標記。第二分析過程(例如寫入識別過程2817)然后會監(jiān)聽標記有ParserlChange標記的事件。作為響應(yīng),它會對其內(nèi)部的墨水數(shù)據(jù)2819的內(nèi)部副本和文檔結(jié)構(gòu)2821應(yīng)用事件規(guī)定的改變,并能夠作為響應(yīng)分析事件內(nèi)描述的數(shù)據(jù)。第二分析器然后會創(chuàng)建并對帶有其分析結(jié)果的事件2829用標記“HandwritingRecognitionChange”進行標記。由于墨水分析工具2803接收來自語義分析器過程2811和識別過程2817的事件,它將事件2831發(fā)送到應(yīng)用程序2801以指明文檔結(jié)構(gòu)2807內(nèi)的改變。
本發(fā)明的這些實施例還會通過監(jiān)聽多于一個事件的事件支持每個分析過程,并基于內(nèi)部處理對有改變的事件用不同標記進行標記。相應(yīng)地,本發(fā)明的這些其它實現(xiàn)還可以允許在文檔內(nèi)分析電子墨水,該文檔與寄宿文檔的軟件應(yīng)用程序的操作異步。
結(jié)論雖然本發(fā)明是用包括實現(xiàn)本發(fā)明的最優(yōu)模式的特定示例描述的,領(lǐng)域內(nèi)的技術(shù)人員可以理解,存在上述系統(tǒng)的多個變體和排列組合以及在本發(fā)明的原理和范圍內(nèi)的技術(shù),如在權(quán)利要求書中提出的。
權(quán)利要求書(按照條約第19條的修改)1.一種用于分析電子墨水的應(yīng)用編程接口,包括分析上下文對象,為包含電子墨水內(nèi)容的文檔維持文檔數(shù)據(jù),所述文檔由一在第一處理線程上運行的軟件應(yīng)用作宿主,以及墨水分析器對象,其采用所述第一線程來制作所述文檔數(shù)據(jù)的副本,把所述文檔數(shù)據(jù)的副本提供給電子墨水分析過程,以及把所述第一處理線程的控制返回到所述軟件應(yīng)用。
2.如權(quán)利要求1所述的應(yīng)用編程接口,其特征在于,所述墨水分析器對象將所述分析過程的結(jié)果與所述文檔的當前文檔數(shù)據(jù)相協(xié)調(diào)。
3.如權(quán)利要求1所述的應(yīng)用編程接口,其特征在于,所述墨水分析器對象制作所述文檔數(shù)據(jù)的第二副本,用于將所述分析過程的結(jié)果與所述文檔的當前文檔數(shù)據(jù)相協(xié)調(diào)。
4.一種應(yīng)用編程接口,其特征在于包括墨水分析器對象,其從作為所述文檔的宿主并且在第一處理線程上運行的軟件應(yīng)用接收包含電子墨水內(nèi)容的文檔的文檔數(shù)據(jù),采用所述第一線程來制作所述文檔數(shù)據(jù)的副本,把所述文檔數(shù)據(jù)的副本提供給電子墨水分析過程,把所述第一處理線程的控制返回到所述分析過程;以及將所述分析過程的結(jié)果與所述文檔的當前文檔數(shù)據(jù)相協(xié)調(diào)。
5.一種分析電子墨水的方法,其特征在于包括接收一標識分析上下文對象的分析上下文值,所述分析上下文對象包括一數(shù)據(jù)結(jié)構(gòu),所述數(shù)據(jù)結(jié)構(gòu)包含文檔的一個或多個元素的特征數(shù)據(jù);以及響應(yīng)于所述分析上下文值的接收,提供對所述分析上下文對象的分析結(jié)果。
6.如權(quán)利要求5所述的方法,其特征在于還包括接收一定義第一處理線程的用戶界面屬性;響應(yīng)于所述分析上下文值的接收,使用第二處理線程來分析所標識的分析上下文對象;以及響應(yīng)于所述用戶界面屬性的接收,把所述分析上下文對象的分析結(jié)果提供給所述第一處理線程。
7.如權(quán)利要求5所述的方法,其特征在于還包括接收一指定用于分析所述分析上下文對象的一個或多個分析標準的選項屬性;以及響應(yīng)于所述分析上下文值的接收,使用所指定的分析標準來分析所標識的分析上下文對象。
8.如權(quán)利要求7所述的方法,其特征在于,所述分析標準包括由以下組成的組中的一個或多個啟用文本識別、啟用表格的使用、啟用列表的使用、啟用注解的使用以及啟用連接符和包含器的使用。
9.如權(quán)利要求5所述的方法,其特征在于還包括響應(yīng)于所述分析上下文值的接收,使用背景處理線程來分析所標識的分析上下文對象;以及允許在文檔分析期間對文檔的改變。
10.如權(quán)利要求5所述的方法,其特征在于還包括通過標識為了包括所述分析上下文對象的分析結(jié)果而修改的所述分析文檔對象的副本,而提供所述分析上下文對象的分析結(jié)果。
11.如權(quán)利要求5所述的方法,其特征在于,所述提供所述分析上下文對象的分析結(jié)果包括在所述分析上下文對象的分析完成后,產(chǎn)生一結(jié)果事件,指示所述分析上下文對象的分析的完成。
12.如權(quán)利要求5所述的方法,其特征在于還包括接收調(diào)用以將所述分析上下文對象的分析結(jié)果與所述文檔的當前狀態(tài)相協(xié)調(diào);以及響應(yīng)于所述接收調(diào)用以將所述分析上下文對象的分析結(jié)果與所述文檔的當前狀態(tài)相協(xié)調(diào),將所述分析上下文對象的分析結(jié)果與所述文檔的當前狀態(tài)相協(xié)調(diào)。
13.如權(quán)利要求5所述的方法,其特征在于還包括接收調(diào)用來分析所述分析上下文對象的至少一部分;響應(yīng)于所述調(diào)用的接收,分析所述分析上下文對象的所述至少一部分;以及禁止對所述文檔的改變,直到已經(jīng)分析了所述分析文檔對象的所述至少一部分為止。
14.如權(quán)利要求13所述的方法,其特征在于還包括接收所述文檔一區(qū)域的標識;以及響應(yīng)于所述區(qū)域的標識的接收,僅分析與所述文檔所標識的區(qū)域相對應(yīng)的所述分析文檔對象的一部分。
15.一種創(chuàng)建用于分析文檔的分析上下文對象的方法,其特征在于包括接收調(diào)用來創(chuàng)建與文檔相對應(yīng)的分析上下文對象;以及響應(yīng)于所述接收調(diào)用來創(chuàng)建與文檔相對應(yīng)的分析上下文對象,創(chuàng)建包括一數(shù)據(jù)結(jié)構(gòu)的分析上下文對象,所述數(shù)據(jù)結(jié)構(gòu)包含文檔的一個或多個元素的特征數(shù)據(jù)。
16.如權(quán)利要求15所述用于創(chuàng)建分析上下文對象的方法,其特征在于,所述分析上下文對象包括一值,該值定義了要在文檔分析過程期間被分析的所述分析上下文對象的一部分。
17.如權(quán)利要求15所述用于創(chuàng)建分析上下文對象的方法,其特征在于,所述分析上下文對象包括一值,該值定義了所述文檔的頁邊緣。
18.如權(quán)利要求15所述用于創(chuàng)建分析上下文對象的方法,其特征在于,所述分析上下文對象包括一標識符,該標識符標識了所述數(shù)據(jù)結(jié)構(gòu)的根節(jié)點。
19.如權(quán)利要求15所述用于創(chuàng)建分析上下文對象的方法,其特征在于,所述分析上下文對象包括用于輔助文檔分析過程的暗示。
20.如權(quán)利要求15所述用于創(chuàng)建分析上下文對象的方法,其特征在于還包括接收調(diào)用以提供所述數(shù)據(jù)結(jié)構(gòu)的所標識的節(jié)點;以及響應(yīng)于所述接收調(diào)用以提供所述數(shù)據(jù)結(jié)構(gòu)的所標識的節(jié)點,提供所述數(shù)據(jù)結(jié)構(gòu)的所標識的節(jié)點。
權(quán)利要求
1.一種用于分析電子墨水的應(yīng)用編程接口,包括分析對象,其為包含電子墨水內(nèi)容的文檔維持文檔數(shù)據(jù),所述文檔由一在第一處理線程上運行的軟件應(yīng)用作宿主,以及墨水分析器對象,其采用所述第一線程來制作所述文檔數(shù)據(jù)的副本,把所述文檔數(shù)據(jù)的副本提供給電子墨水分析過程,把所述第一處理線程的控制返回到所述軟件應(yīng)用。
2.如權(quán)利要求1所述的應(yīng)用編程接口,其特征在于,所述墨水分析器對象將所述分析過程的結(jié)果與所述文檔的當前文檔數(shù)據(jù)相協(xié)調(diào)。
3.如權(quán)利要求1所述的應(yīng)用編程接口,其特征在于,所述墨水分析器對象制作所述文檔數(shù)據(jù)的第二副本,用于將所述分析過程的結(jié)果與所述文檔的當前文檔數(shù)據(jù)相協(xié)調(diào)。
4.一種應(yīng)用編程接口,其特征在于包括墨水分析器對象,其從作為所述文檔的宿主并且在第一處理線程上運行的軟件應(yīng)用接收包含電子墨水內(nèi)容的文檔的文檔數(shù)據(jù),采用所述第一線程來制作所述文檔數(shù)據(jù)的副本,把所述文檔數(shù)據(jù)的副本提供給電子墨水分析過程,把所述第一處理線程的控制返回到所述分析過程;以及將所述分析過程的結(jié)果與所述文檔的當前文檔數(shù)據(jù)相協(xié)調(diào)。
全文摘要
一應(yīng)用編程接口例示了一墨水分析器對象,該對象從一軟件應(yīng)用接收包含電子墨水內(nèi)容的文檔的文檔數(shù)據(jù),所述軟件應(yīng)用是該文檔的宿主并且運行在第一處理線程上。然后墨水分析器對象采用第一線程來制作文檔數(shù)據(jù)的副本,把文檔數(shù)據(jù)的副本提供給電子墨水分析過程,并且把第一處理線程的控制返回分析過程。在分析過程已經(jīng)分析了電子墨水后,墨水分析器對象將分析過程的結(jié)果與文檔的當前文檔數(shù)據(jù)相協(xié)調(diào)。
文檔編號G06F13/00GK1662877SQ03801888
公開日2005年8月31日 申請日期2003年8月21日 優(yōu)先權(quán)日2003年8月21日
發(fā)明者R·敦坎, B·德萊塞維克, J·維克安姆, H·蘇坦特, S·拉古帕蒂, T·H·卡納佩爾, Z·斯拉依, J·特納, T·蘭德斯塔德, 王海勇, R·內(nèi)特薩 申請人:微軟公司