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