專利名稱:用于測量svg文檔相似性的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及用于可伸縮矢量圖形(SVG)文檔的系統(tǒng)。
更具體地,本發(fā)明涉及用于測量SVG文檔中相似性程度的系統(tǒng)和方法。
背景技術(shù):
在許多應(yīng)用中,測量對象之間的相似性水平或程度是很有用的。 基于圖像的固有顏色和紋理屬性來執(zhí)行圖像相似性??梢曰诳紤]
拓樸和特征匹配的形狀匹配算法來比較3D對象??梢酝ㄟ^從簡單的
"diff,程序到更為高級的模式匹配和語義歸組算法的量度來匹配文
本內(nèi)容。
盡管許多系統(tǒng)和機制已知用于確定和測量XML文檔之間的相似 性的水平,但計算SVG文檔間的相似性不是那么簡單。SVG內(nèi)容基 于下層的XML格式。SVG文檔的基本困難在于,具有很相似的下 層XML表示的兩個給定SVG文檔當(dāng)被呈現(xiàn)(render)時可能具有完 全不同的視覺表示,并且反之亦然。圖l(a)和圖l(b)舉例示出該問題。 盡管圖l(a)和圖l(b)中的兩個SVG文檔看起來相同,但它們的下層 文本表示彼此完全不同。特別地,圖1(a)使用〈defs〉和〈use〉元素來 預(yù)定義形狀并且以不同的顏色和位置來重新-使用它們。另 一方面, 圖l(b)在沒有重新使用性的情況下單獨地呈現(xiàn)每個形狀。如果系統(tǒng)
可能被分類為完全不同。另外,用于確定相似性水平的傳統(tǒng)上基于 像素的方法不是最優(yōu)的,因為將不得不將SVG呈現(xiàn)的內(nèi)容轉(zhuǎn)換成光 柵圖形,并且當(dāng)涉及動畫時,則處理變得更為復(fù)雜。
另一方面,圖2(a)和2(b)表示出一種情形,其中SVG文本內(nèi)容
6彼此相似,但文檔自身具有十分不同的視覺外觀。兩個文檔之間的
不同僅在于下層的SVG文本為"style^"visibility:hidden.""。然而,這 小小的差異使得最終的圖像在視覺上看起來很不同。
盡管對于2D圖形,SVG被認為是有前景的基于XML的語言, 其潛在地為新的消費者和企業(yè)服務(wù)打開許多可能性,但在這些不同 的應(yīng)用中優(yōu)化SVG遠還沒有哪怕是相對小的進步。
先前已經(jīng)開發(fā)了若干種方法和工具來計算XML文檔間的相似 性。例如, 一種稱為"XMLDiff,的工具檢測XML子樹中的結(jié)構(gòu)變化 并且生成描述兩個子樹之間差異的Diffgram。第二種方法涉及使用 匹配算法來測量XML文檔和DTD之間的結(jié)構(gòu)相似性。第三種方法 涉及通過將每個XML文檔表示為數(shù)字序列來將其結(jié)構(gòu)線性化,并且 接著通過對它們頻率進行分析來比較序列。第四種方法涉及用于 XML文檔的結(jié)構(gòu)相似性量度,其基于由DTD得到的有序標(biāo)記樹到 聚類(cluster)文檔之間的"XMLaware"編輯距離。第五種方法在基 于文檔的矢量形式表示文檔后測量矢量之間的相似性。該方法用于 獲得在兩個給定文檔之間的結(jié)構(gòu)相似性的測量,并且在美國專利申 請公布號2005/0038785中有所討論。然而,這些系統(tǒng)沒有關(guān)注下層 內(nèi)容和視覺表示中的差異問題,因為XML本身不是可見的并且SVG 是XML內(nèi)容的特殊形式。
除了上述,還有若干種方法用于基于某些優(yōu)化來壓縮XML內(nèi)容 以移除冗余模式。 一個此類的系統(tǒng)是新的XML壓縮機制,其基于 S叫uitur壓縮算法以移除其表示中過量的信息冗余。通過將壓縮結(jié)果 組織為一組上下文自由語法規(guī)則,該機制在沒有解壓縮的情況下支 持XPath查詢的處理。另一種方法涉及一種工具,其通過數(shù)據(jù)交換 和存檔中的應(yīng)用來壓縮XML數(shù)據(jù),其通常以大致相同的速率實現(xiàn)兩 倍于gzip的壓縮率。該壓縮器稱為XMill,其結(jié)合以及組合現(xiàn)有的 壓縮器以將它們應(yīng)用到異類的XML數(shù)據(jù)。XMill使用zlib,其用于 gzip的庫函數(shù),用于筒單數(shù)據(jù)類型的數(shù)據(jù)類型特定壓縮器的集合, 以及用于應(yīng)用特定數(shù)據(jù)的用戶定義壓縮器。
發(fā)明內(nèi)容
本發(fā)明提供一種改進的處理,其用于確定任意兩個給定SVG文
檔是否視覺上相似,以及確定文檔之間相似性程度和相似性特性。
本發(fā)明引入一種機制,其基于某些SVG優(yōu)化啟發(fā)式算法(heuristics) 來將各個SVG文檔轉(zhuǎn)換成它們最小的邏輯表示。接著在表示的減小 邏輯D O M樹上計算這些邏輯表示的相似性。樹同構(gòu)化用于確定樹結(jié) 構(gòu)相對于彼此如何相似。若干種量度,例如最大公共子樹和樹距離 度量,可用于確定兩個給定樹之間的公共節(jié)點的最大數(shù)目。最大公 共子樹越大,則這兩個樹也更為相似。
本發(fā)明用于將SVG減小到它的最小邏輯形式的方法不同于上述 討論的XML壓縮方法,其不同之處在于,利用本發(fā)明,基本上以不 同的方式來計算最小的表示。另外,不同于先前討論的基于壓縮的 方法,最小邏輯SVG形式仍是未壓縮的并且仍能夠使用本發(fā)明的系 統(tǒng)和方法來進行呈現(xiàn)。
本發(fā)明能夠最大程度地改進并且甚至優(yōu)化SVG的性能,從而包 括SVG內(nèi)容的大數(shù)據(jù)集合的下層邏輯表示可以基于計算的相似性信 息來更為有效地修改、更新或遍歷(traverse)。本發(fā)明的獨特性在 于,其關(guān)心SVG類型的內(nèi)容,其中在實際計算相似性程度前,需要 考慮下層的XML表示和其可視外觀。此外,本發(fā)明提供新的技術(shù), 其用于通過在歸一化的SVG樹上應(yīng)用樹同構(gòu)性來計算相似性、計算 SVG文檔的最小邏輯表示并且表示該相似性信息。
本發(fā)明的系統(tǒng)和方法可以應(yīng)用到各種用例中,特別是與移動設(shè) 備群體相關(guān)的。在流式傳輸?shù)姆桨钢?,該相似性信息允許客戶端更 為明確是否使用到達的數(shù)據(jù)分組來重構(gòu)場景圖形。另外,客戶端能 夠基于在RTP凈荷報頭中提供的信息來修復(fù)其現(xiàn)有的場景圖形,而 不是破壞掉整個場景圖形并且重構(gòu) 一 個新的。在內(nèi)容搜索情形中, 可以基于示例的SVG文檔或通過查詢關(guān)鍵詞來檢索類似的SVG文 檔。這有助于更為有效的和智能的內(nèi)容搜索應(yīng)用。在壓縮情形中, 通過觀察文檔內(nèi)的相似性,可以通過替代地僅存儲元素ID來移除給
8定SVG文檔內(nèi)的冗余信息。
通過結(jié)合附圖的下述詳細說明,本發(fā)明的這些和其他目的、優(yōu) 點和特征,以及組織和操作方式將變得清楚,其中貫穿下述的幾個 附圖,相同的元件以相同的標(biāo)號表示。
圖l(a)和圖l(b)示出圖形上表現(xiàn)相似、但下層文本表示極大不同
的兩個SVG文檔的例子;
圖2(a)和圖2(b)示出圖形上表現(xiàn)不同、但下層文本表示類似的兩
個SVG文檔的例子;
圖3示出通過忽略冗余、未引用和未使用的SVG元素來將SVG
文檔的下層文本表示轉(zhuǎn)換成最小邏輯表示;
圖4演示在從SVG文檔計算最小邏輯表示時解析屬性的例子; 圖5示出計算計算最小邏輯表示時忽視更少的重要信息的例子; 圖6示出兩個SVG文檔共享它們之間的某些類似內(nèi)容的例子; 圖7示出兩個SVG文檔共享它們之間的某些類似結(jié)構(gòu)的例子; 圖8示出兩個SVG文檔共享它們之間的類似內(nèi)容和結(jié)構(gòu)的例
子;
圖9(a)表示原始SVG場景的圖形描繪;圖9(b)表示場景更新的 效果SetpdateAttribute動作;圖9(c)示出后續(xù)場景更新的影響 AddElement (添加元素)動作;圖9(d)表示后續(xù)場景更新的影響 DeleteElement (刪除元素)動作;以及圖9(e)表示后續(xù)場景更新的影 響ReplaceElement (替換元素)動作;
圖10是示出將重要性權(quán)重分配給SVG文檔中的單個內(nèi)容片的 示圖11是示出用于實現(xiàn)本發(fā)明的一個實施方式的處理的流程圖12是其中可以實現(xiàn)本發(fā)明的系統(tǒng)的概略圖13是可結(jié)合本發(fā)明原理的電子設(shè)備的透視圖;以及
圖14是圖13的電子設(shè)備的電路的示意圖。
具體實施例方式
本發(fā)明提供了一種系統(tǒng)和方法,其用于將SVG文檔減小到它們 的最小邏輯DOM樹結(jié)構(gòu),從而避免每個文檔的視覺表示和下層文本 表示之間的不一致性問題。接著本發(fā)明可基于樹的同構(gòu)性來將相似 性度量應(yīng)用于計算SVG文檔之間的相似性程度。本發(fā)明可用于例如 流式傳輸、內(nèi)容搜索和壓縮的應(yīng)用中。下面將討論這些用例中的每 一個。
在圖11中描繪出根據(jù)本發(fā)明的計算SVG樣本之間相似性的處 理。在步驟100處,確定兩個SVG文檔的最小邏輯表示。在步驟110 處,在每個SVG的文檔對象模型(DOM)上執(zhí)行樹的同構(gòu)性。在步 驟120處,系統(tǒng)針對每個文檔將相似性度量應(yīng)用于創(chuàng)建的分層樹。 在步驟130處,創(chuàng)建針對兩個文檔的、所計算的相似性信息的表示。 接著在步驟140處,該信息可以由若干個應(yīng)用中的一個來使用。下 面將討i侖這些處理部分的每個。
在本發(fā)明的一個實施方式中,確定SVG文檔的最小邏輯表示涉 及四個不同的子處理。第一子處理涉及瓦解(collapse)該文檔。冗 余、未引用和未使用的SVG元素和注釋被忽略。應(yīng)用該子處理以便 將對于SVG文檔的視覺表示沒有貢獻的元素移除。文檔可能經(jīng)常包 含不被呈現(xiàn)或可能設(shè)置成不可見的〈defs〉塊內(nèi)的特定元素定義??梢?在將所討論的文檔與其他SVG文檔進行比較之前移除此類的元素。 在圖3中描繪出該瓦解子處理,其中注釋和帶有"visibility: hidden (可視性隱藏)"設(shè)置的指令被移除。
第二子處理涉及"替換"。該子處理應(yīng)用于擴展SVG文檔內(nèi)的 內(nèi)部引用和定義,解析引用和將相對URL解析成絕對URL以便更 為公平地比較。如圖1中所見,〈defs〉和〈use〉元素意味著元素定義 的可重用性并且可以在SVG文檔中按照期望多次使用。如果存在 〈use〉元素,則使用的內(nèi)容被克隆并且可視地附加到〈use〉元素。該 克隆內(nèi)容是獲得"<use〉ed"的原始元素的"陰影樹"。替換涉及擴展其中提到〈use〉元素的元素定義內(nèi)聯(lián)(inline)??梢匀绱藞?zhí)行,從 而精確地將文檔與例如不使用〈defs〉和〈use〉元素的另 一個3見覺類似 的SVG文檔進行比較。
創(chuàng)建最小邏輯表示的第三子處理涉及解析屬性。通常,即使從 〈defs〉塊正確地替換了引用,并且以"xlink:hrer使用相同的元素id, 但文檔中的屬性也可能不同。這可導(dǎo)致視覺表示中的顯著變化。例 如,在SVG動畫中,高度、寬度、開始時間等的改變可能導(dǎo)致在特 定時間戳處的完全不同畫面。在圖4中示出此類的例子。在該方案 中,盡管兩個文檔使用了相同的動畫定義,但實際動畫中的屬性并 不同,如在兩秒標(biāo)記處的相應(yīng)視覺表示中所指示出的。當(dāng)?shù)谝粍赢?比第二動畫早一秒開始時,通過兩秒標(biāo)記,矩形已經(jīng)從紫色改變?yōu)?黃色。
創(chuàng)建最小邏輯表示的第四子處理涉及忽略不太重要的差異。 SVG中的各個元素或?qū)傩酝ǔ?赡芘c其他元素或?qū)傩圆灰粯又匾?例如,當(dāng)計算相似性以用于某些應(yīng)用時,字體類型和大小的差異可 以被忽略。另外,SVG嵌入其他的媒體,例如光柵圖像、音頻和視 頻。除了計算SVG相似性以外,這些元素也將需要音頻/視頻相似性 量度單獨地應(yīng)用到它們,或根據(jù)特定的應(yīng)用或系統(tǒng),可以簡單地忽 略這些元素。在圖5示出的例子中,兩個SVG文檔在視覺上相似, 例外在于當(dāng)與第二圖像比較時,第一圖像中的單詞"Hello (你好)" 更大。觀察文本表示,可以看到字體大小的變化。根據(jù)應(yīng)用,這可 以不是很重要,并且當(dāng)創(chuàng)建最小邏輯表示時,如果應(yīng)用允許這樣, 則"font-size (字體大小)"屬性可以忽略。
圖11中的步驟110涉及每個SVG的文檔對象模型(DOM)上 的樹同構(gòu)性。在SVG中,按照元素在場景圖形或文檔對象模型 (DOM)中出現(xiàn)的順序來呈現(xiàn)這些元素。以該數(shù)據(jù)格式的每個元素 可以被認為是在其上應(yīng)用著色的畫布。如果將對象由〈g〉標(biāo)簽歸組到 一起,則首先它們被呈現(xiàn)為單獨的組畫布,接著使用與組關(guān)聯(lián)的過 濾器或阿爾法遮罩(alpha mask)來在主畫布上進行合成。以類似XML的節(jié)點標(biāo)記的樹結(jié)構(gòu)來給出下層的SVG定義。換句話說,DOM 可以被視為有向非循環(huán)樹,允許對組成各種SVG元素的樹的節(jié)點進
行遍歷。
如果通過簡單地對節(jié)點進行重命名而將一個樹變換成另一個 樹,則兩個給定的樹通常被認為是同構(gòu)的。SVG文檔樹T可以:帔定 義為4元組T-(N,r,E,L),其中N是節(jié)點的有限集;屬于N的r=root(T) 是根節(jié)點'<svg〉, ; E是邊緣并且因此與Ns成二元關(guān)系;并且L 定義表示如在SVG 1.2中定義的元素名或?qū)傩缘淖址?,其可?http:〃www.w3.org/TR7SVG12/找到。
為了使得兩個SVG樹T1和T2是同構(gòu)的,需要成為1-1映射 f:Vl-〉V2,使得當(dāng)且僅當(dāng)(f(v),f(w"是E2中的邊緣時,(v,w)是El 中的邊緣。另外,Tl和T2表示兩個SVG文檔的最小邏輯表示。
圖11中的步驟120涉及應(yīng)用相似性量度??梢詰?yīng)用用于計算分 層樹相似性的不同相似性量度。本發(fā)明可使用下面量度的任意項而 同時提供更為優(yōu)良的性能。
(1) 如果A和B是兩個邏輯上最小化的SVGDOM樹,則集合
操作n (交集)可以被定義。該操作指示對于樹A和B二者共同的
SVG子樹。SVG DOM樹的基數(shù)(cardinality )(|")是樹T中節(jié)點(SVG
元素)的數(shù)目。相似性的百分比度量可以通過下式給出
SI =|AnB|/|A| * 100
S2-lAnBl/間* 100
(2) 樹距離度量在本例子中,A和B是兩個邏輯上最小化的 SVGDOM樹,D(A,B)是它們的樹編輯距離(即,不同節(jié)點的數(shù)目) 并且Cost(A,B)是在A中刪除不同的節(jié)點并且從B插入新的節(jié)點的成 本。A和B之間的樹距離度量S接著被定義為S(A,B) = D(A,B)/CoSt(A,B)。 當(dāng)SVG文檔類似于高百分比的匹配節(jié)點時,貝'J S(A,B)是低的,并且 當(dāng)它們很不相同并且類似于低百分比匹配節(jié)點時,則S(A,B)是高的。 在該情況下,值的范圍處于0和1之間。
任意兩個最小邏輯S VG場景圖形的相似性可以基于下面的三個 分類來進行表征內(nèi)容相似性、結(jié)構(gòu)相似性和位置內(nèi)容相似性。內(nèi)容相似性涉及確定兩個邏輯SVG場景圖形之間的公共內(nèi)容交 集。兩個給定SVG場景圖形中的內(nèi)容等同性類似于子字符串匹配。 例如,在圖6中示出的兩個SVG場景圖形共享一些公共的路標(biāo)符號 定義。在兩個SVG文檔之間共享的公共SVG內(nèi)容的片斷在下面的 場景圖形提供。
結(jié)構(gòu)相似性涉及確定兩個邏輯SVG場景圖形之間的公共結(jié)構(gòu)交 集。結(jié)構(gòu)上相似的SVG場景圖形具有相似的樹分層,即,它們共享 某些公共元素和元素的孩子(children)。然而,公共元素的屬性可 能不同。在圖7中,文檔具有某種結(jié)構(gòu)相似性,但每個文檔中的圖 標(biāo)具有不同的屬性和ID。例如,第一 SVG文檔具有定義天氣符號的 圖標(biāo)元素,并且第二 SVG文檔具有定義路標(biāo)的圖標(biāo)元素。另外,在 兩個文件中,各種元素的填充顏色屬性不同。然而,這兩個文檔確 實具有與道路連接符和城市類似的下層地圖結(jié)構(gòu)。
位置內(nèi)容相似性涉及考慮內(nèi)容以及位置。位置內(nèi)容相似性是位 于公共結(jié)構(gòu)中的公共內(nèi)容的度量,并且其最適宜在進行流式傳輸?shù)?同時用于確定SVG分組相似性,這是因為其提供了最多的信息。兩 個SVG場景圖形之間的位置內(nèi)容相似性百分比越高,則SVG場景 圖形彼此更為相同。在圖8中,兩個SVG文檔/場景圖形在位置上與 正在考慮的地圖安排相似。然而,SVG文檔B在地圖的一個區(qū)域上 具有縮放能力。
圖11中的步驟130涉及創(chuàng)建計算的相似性信息的表示。當(dāng)相似 性量度通知用戶相似性的類型以及SVG場景圖形彼此如何相似時, 相似性信息告訴用戶什么是相似的。例如,在流式傳輸情形中,如 果兩個SVG樣本之間的位置內(nèi)容相似性大于80%,則流式傳輸服務(wù) 器可選擇向客戶端發(fā)送相似性信息。接著客戶端可基于進入的相似 性信息來修改場景圖形。
SVG是基于XML的,并且兩個SVG場景圖形之間的相似性信 息可通過使用SVG場景圖形中的節(jié)點位置來直觀地表示??捎糜谥?定針對SVG相似性信息的節(jié)點位置的語法規(guī)則可以如下定義指定節(jié)點》'/,節(jié)點位置'/,…,其中'/'指"其孩子"。 節(jié)點的范圍->節(jié)點位置節(jié)點位置 使用例子,/1〃"-G々指從根〈SVg〉層處開始的第一節(jié)點的第二 個孩子的第三、第四、第五和第六個孩子。
圖11中的步驟140涉及令各種應(yīng)用使用生成的相似性信息。在 這里討論三種此類的應(yīng)用。然而,其他應(yīng)用也可以能夠使用本發(fā)明 生成的相似性信息。
流式傳輸。SVG內(nèi)容具有向音頻和視頻內(nèi)容提供框架的能力,
并且可以在給定的時間通過網(wǎng)絡(luò)被流式傳輸?shù)竭_許多客戶端。由于
流式傳輸本身不能保證數(shù)據(jù)遞送中的穩(wěn)定性(residency),若干種糾 錯機制的一種包括在特定的時間間隔處重傳相同的樣本,只要其在 表示中是時間上有效的。為了確??蛻舳嗽谔囟ǖ臅r刻處接收到相 關(guān)的SVG場景,流式傳輸服務(wù)器以規(guī)則的間隔發(fā)送當(dāng)前的SVG場 景,直到其在時間上變得無效。
當(dāng)呈現(xiàn)當(dāng)前SVG場景的客戶端接收相同的分組,破壞其現(xiàn)有的 場景圖形,并且以新的分組對其進行重構(gòu)時出現(xiàn)問題。當(dāng)客戶端側(cè) 以規(guī)則的間隔重復(fù)地破壞和重構(gòu)SVG場景時,這在客戶端側(cè)上導(dǎo)致 嚴(yán)重優(yōu)化問題。還不存在在進行流式傳輸?shù)耐瑫r確定SVG樣本間相 似性的常規(guī)解決方案,并且在實時傳輸協(xié)議(RTP)凈荷格式中還沒 有提供信息來這樣做。通過提供在進行流式傳輸?shù)耐瑫r比較SVG媒 體內(nèi)容的兩個相鄰樣本的有效方法,該信息可以;陂指定為RTP凈荷 報頭中的新單元。在接收到樣本時,客戶端因此可以簡單地從報頭 讀取該信息,并且如果新樣本是不同的,則選擇破壞其現(xiàn)有的場景 圖形。
在流式傳輸?shù)那樾沃?,通過使用由服務(wù)器發(fā)送的添加、刪除或 替換操作形式更新語法,相似性信息本身也可以用于動態(tài)地更新客 戶端上的SVGDOM。流式傳輸服務(wù)器可發(fā)送具有相似性或非相似性 的RTP分組中的信息?;诜纸M之間的相似性,客戶端中DOM的 位置可以被動態(tài)地修改。這通過最小化DOM重構(gòu)的數(shù)目并且僅修復(fù)或修改DOM樹來優(yōu)化客戶端的性能。應(yīng)該注意到,如果正在比專交的
SVG場景圖形很相似,則更為最佳的是發(fā)送非相似性信息而不是相
似性信息。場景更新指令如下。
SetAttribute(設(shè)置屬性)該元素用于更新由目標(biāo)元素(xlink:href)
所指定的場景的屬性。屬性名(attributeName)和屬性值(attribute
value)對應(yīng)于將纟皮添加或替換的目標(biāo)元素的屬性和值。 〈SetAttribute attributeName ="x" attributeValue = "10"
attributeType=,,CSS/XML/auto,, xlink:hre^lyRect" />
AddElement (添加元素)該元素用于通過作為指定的父母元
素(xlink:href)的孩子的新元素(myCircle)來更新場景。如果指定
insertBefore (之前插入),貝'J新元素在該元素之前被插入。 〈Ad犯lement xlink:href - "弁Scenel" insertBefore = "#myRect,5>
<circle id = myCircle" cx="20" c產(chǎn)"20" r="50,, fill-"yellow" />
</AddElement>
DeleteElement (刪除元素)該元素用于從場景或DOM對象才莫 型中刪除指定的元素(href)。
</DeleteElementxlink:href="#myRect,7>
如果在語法中不存在指定的元素,則該更新被忽略。另外,如 果討論的元素恰好有孩子,則整個子樹從客戶端的存儲器中移除。 然而,如果其是葉節(jié)點,則僅刪除一個元素。
ReplaceElement(替換元素)該元素用于以新的元素(myCircle )
來替換來自場景的現(xiàn)有元素(xlink:href)。該操作本質(zhì)上按順序組
合了 DeleteElement和AddElement 。
〈ReplaceElement xlink:href = "#myCircle,,>
〈ellipse id = "myEUipse" cx="40" cy="35" rx="l 10" r""60"
fill-'T3lue,, /> </ReplaceElement>
此外,如果未向SVG元素提供屬性名,則相對于根的節(jié)點位置 可以用于上述的更新操作。使用相對節(jié)點位置來進行各種更新操作 的例子是〈SetAttribute attributeName = "x,, attributeValue = "10" attributeType= "CSS/XML/auto" position- 7 1 / 5 — 6 " />
該命令更新了在根層處開始的第一孩子的第五和第六孩子節(jié)點 的屬性。
<AddElement xlink:href - "將cenel" insertBefore = "/ 2 / 6">
<circle id = myCircle" cx="20" cy="20" r="50,, fill-"yellow" /> </AddElement>
上述命令在從根層處開始的第二孩子的第六孩子節(jié)點前添加新 的元素。
<DeleteElement position-"/ 3 /1"/>
上述命令刪除在從根層處開始的第三節(jié)點的第 一孩子。 <ReplaceElement xlink:href = / 3 / 4 / 2">
〈ellipse id = "myEllipse" cx="40" cy="35" rx-"l 10" ry="60" fill-'^lue" />
上述命令替換了在從根層處開始的第三孩子節(jié)點的第四孩子節(jié)
點的第二孩子。
圖9(a)-9(e)示出各種場景更新操作的例子。圖9(a)示出包括矩形 元素"myRect"的原始SVG場景。圖9(b)示出使用"SetAttribute" 的效果,其改變原始元素"myrect,,的位置。圖9(c)示出"AddElement" 屬性的影響,其將新的項"myCircle"添加到場景。圖9(d)示出
"DeleteElement"屬性的效果,從場景刪除"myrect"元素。圖9(e) 示出"ReplaceElement,,屬性的效果,其中新的項"myCircle,,替換 先前存在的項"myEllipse"。
內(nèi)容搜索。不同于傳統(tǒng)的光柵圖形,SVG具有下層的XML語法, 因此使得搜索任務(wù)相對來說更為直接。利用SVG的持續(xù)增長的可應(yīng) 用性來生成天氣圖、交通信息和娛樂,僅SVG文檔的本體(corpus) 在增加。更快和更為有效的檢索技術(shù)因此是必要的。借助于例子的 內(nèi)容搜索和借助于關(guān)鍵詞的內(nèi)容搜索是可從本發(fā)明的SVG相似性計 算系統(tǒng)極大獲益的兩個框架。另外,通過SVG作為基于web的矢量 圖形語言的隨之普及,搜索引擎可以被擴展到也包括針對SVG文檔 的搜索。
可以在例如Google的若千搜索引擎上查詢SVG文檔。然而,此類的搜索主要基于SVG的文件名和圍繞該文件名的上下文。開發(fā)相
似性信息并且能夠以 一 些重要的屬性來對SVG文檔的多個部分進行
優(yōu)先順序排列,則可得到更為智能的搜索機制。
在圖10中示出分配此類信息的例子。在該情形下,重要性權(quán)重
被歸一化并且范圍從0到1, l是最重要的。因此可以搜索文檔,其
中關(guān)聯(lián)性是基于搜索SVG文檔的最重要部分。用于搜索文檔的內(nèi)部
查詢可以是這樣的形式
指定節(jié)點々'/'節(jié)點位置'/'…其中'/'指"其孩子"。
壓縮。已經(jīng)做出相當(dāng)?shù)呐硎沟肧VG文件大小盡可能的小而
同時仍保持XML的益處并且實現(xiàn)兼容性以及與其他萬維網(wǎng)聯(lián)盟 (W3C)規(guī)范的平衡。SVG文檔具有像XML的結(jié)構(gòu)并且包含重復(fù)
的和冗余的信息。通過觀察文檔內(nèi)相似性,在通過搜索DOM結(jié)構(gòu)中
的相似性和去除冗余信息來對SVG進行編碼的同時,可以做出更大
的優(yōu)化。
如同任意的文本標(biāo)記語言,SVG通常是冗長的。在SVG文檔中 有許多"冗余,,數(shù)據(jù),包括空白空間(whitespace)、注釋和先前指 出的元素和屬性名。因此SVG文檔是用于壓縮的理想候選者。通過 將SVG文檔的歸一化擴展到它們的最小邏輯表示, 一組新的壓縮算 法可開發(fā)用于SVG。
下面是本發(fā)明的可選實現(xiàn)的若干例子。在一個此類的實現(xiàn)中, 確定兩個SVG文檔的最小邏輯表示的步驟可包括其他SVG規(guī)則的 應(yīng)用,從而基于正在使用的應(yīng)用或系統(tǒng)來實現(xiàn)最小邏輯表示。
在另一實現(xiàn)中,SVG樹同構(gòu)性的概念可以被應(yīng)用于不同種類的 SVG樹,例如歸一化樹或完整版本。在附加的實施方式中,可以使 用在計算同構(gòu)性中使用的參數(shù)的標(biāo)記變化。
在本發(fā)明的另一實施方式中,其他常用的相似性量度可以被應(yīng) 用在分層樹上。沿相同的行,在針對每個文檔將相似性量度應(yīng)用于 創(chuàng)建的分層樹的步驟處,在相似性分類中可以存在其他的變化。
在本發(fā)明的另一實施方式中,在關(guān)于如何在DOM樹中訪問各個元素的語法中可以存在變化。根據(jù)使用的客戶端和服務(wù)器以及應(yīng)用 本身,場景更新語法也可包括用于流式傳輸情形的變化。最后,可 以對如何在搜索和壓縮情形中計算SVG最小邏輯表示、樹同構(gòu)性和 相似性量度做出修改。所有的上述實施方式和實現(xiàn)也可以根據(jù)需要 或期望的那樣進行組合以符合系統(tǒng)和應(yīng)用的要求。
圖12示出在其中可以利用本發(fā)明的系統(tǒng)10,該系統(tǒng)包括可以通 過網(wǎng)絡(luò)進行通信的多個通信設(shè)備。系統(tǒng)IO可以包括有線或無線網(wǎng)絡(luò) 的任意組合,該網(wǎng)絡(luò)包括但不限于移動電話網(wǎng)、無線局域網(wǎng)(LAN)、 藍牙個域網(wǎng)、以太網(wǎng)LAN、令牌環(huán)LAN、廣域網(wǎng)、互聯(lián)網(wǎng)等。系統(tǒng) 10可以包括有線和無線通信設(shè)備兩者。
例如,圖12中所示的系統(tǒng)10包括移動電話網(wǎng)11和互聯(lián)網(wǎng)28。 到該互聯(lián)網(wǎng)28的連接可以包括但不限于遠程無線連接、近程無線連 接以及各種有線連接,各種有線連接包括但不限于電話線、電纜線、 電力線等等。
該系統(tǒng)10的示例性通信設(shè)備可以包括但不限于移動電話12、 PDA和移動電話的組合14、 PDA 16、集成消息收發(fā)設(shè)備(IMD) 18、 臺式計算機20和筆記本計算機22。通信設(shè)備可以是固定的或者當(dāng)由 正在移動中的個人攜帶時可以是移動的。通信設(shè)備還可以處于運輸 方式中,該運輸方式包括但不限于汽車、卡車、出租車、公共汽車、 船、飛機、自行車、摩托車等。通信設(shè)備中的部分或全部可以發(fā)送 和接收呼叫和消息以及通過到基站24的無線連接25與服務(wù)供應(yīng)商 進行通信。基站24可以連接到網(wǎng)絡(luò)服務(wù)器26,其允許移動電話網(wǎng) 11和互聯(lián)網(wǎng)28之間的通信。系統(tǒng)IO可以包括另外的通信設(shè)備和不 同類型的通信設(shè)備。
通信設(shè)備可以使用不同的傳輸技術(shù)進行通信,該傳輸技術(shù)包括 j旦不限于,碼分多址(CDMA)、全球移動通信系統(tǒng)(GSM)、通 用移動通信系統(tǒng)(UMTS )、時分多址(TDMA )、頻分多址(FDMA )、 傳輸控制協(xié)議/互聯(lián)網(wǎng)協(xié)議(TCP/IP)、短消息收發(fā)服務(wù)(SMS)、 多媒體信息收發(fā)服務(wù)(MMS )、電子郵件、即時消息收發(fā)服務(wù)(IMS )、藍牙、IEEE 802.il等。通信設(shè)備可以使用各種介質(zhì)進行通信,該介 質(zhì)包括但不限于,無線電、紅外線、激光、電纜連接等等。
圖13和14示出了在其中可以實現(xiàn)本發(fā)明的代表性移動電話12。 然而,應(yīng)當(dāng)理解,本發(fā)明不希望限定于一個特定類型的移動電話12 或其他電子設(shè)備。圖13和圖14中的移動電話12包括殼體30、以液 晶顯示器形式的顯示器32、小鍵盤34、麥克風(fēng)36、聽筒38、電池 40、紅外端口42、天線44、根據(jù)本發(fā)明的一個實施例的UICC形式 的智能卡46、讀卡器48、無線接口電路52、編解碼器電路54、控 制器56和存儲器58。各個電路和元件都是本領(lǐng)域公知的類型,例如 Nokia移動電i舌系列。
在方法步驟的通常環(huán)境中描述了本發(fā)明,其可以通過包括計算 機可執(zhí)行指令的程序產(chǎn)品在一個實施例中實現(xiàn),例如程序代碼,可 由計算機在網(wǎng)絡(luò)互連環(huán)境中執(zhí)行。
通常,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的 例行程序、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等。計算機可執(zhí)行指令、 相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)和程序模塊代表用于執(zhí)行在此公開的方法的步驟 的程序代碼的例子。這種可執(zhí)行指令或相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)的特定序 列代表了用于執(zhí)行以這種步驟描述的功能的相應(yīng)動作的例子。
本發(fā)明的軟件和web執(zhí)行可以使用標(biāo)準(zhǔn)編程技術(shù)完成,該標(biāo)準(zhǔn)
索步驟、相關(guān)性步驟、比較步驟和決定步驟。還應(yīng)當(dāng)注意此處和權(quán) 利要求書中使用的詞語"組件"和"模塊"旨在包含使用 一行或多行軟 件代碼的執(zhí)行、和/或硬件執(zhí)行、和/或用于接收手動輸入的設(shè)備。
為了示意和描述的目的,已經(jīng)對本發(fā)明的實施例進行了前述描 述。不旨在窮舉或者將本發(fā)明限制在所公開的精確形式下,并且修 改和變化可以參照上述教導(dǎo)做出,或者從本發(fā)明的實踐中獲得。選 擇和描述的實施例用于解釋本發(fā)明的原理及其實際應(yīng)用,以使本領(lǐng)
改以適應(yīng)于特定的預(yù)期應(yīng)用。
權(quán)利要求
1.一種用于比較SVG文檔的方法,包括創(chuàng)建第一SVG文檔的最小邏輯表示;在所述第一SVG文檔的文檔對象模型的最小邏輯表示上執(zhí)行樹同構(gòu)性,以便創(chuàng)建第一邏輯最小化SVG DOM樹;使用相似性量度來將所述第一邏輯最小化SVG DOM樹與針對第二SVG文檔的第二邏輯最小化SVG DOM樹進行比較;以及從所述第一邏輯最小化SVG DOM樹和所述第二邏輯最小化SVG DOM樹的比較來創(chuàng)建所計算的相似性信息的表示。
2. 根據(jù)權(quán)利要求1所述的方法,進一步包括在流式傳輸應(yīng)用中 發(fā)送關(guān)于所述表示的信息。
3. 根據(jù)權(quán)利要求2所述的方法,其中所述發(fā)送的信息包括從包 括下面信息的組中選擇的信息條目,該組包括關(guān)于場景中屬性更 新的信息、關(guān)于將元素添加到場景中的信息、關(guān)于從場景中刪除元 素的信息、關(guān)于在場景中替換元素的信息、以及它們的組合。
4. 根據(jù)權(quán)利要求1所述的方法,進一步包括在壓縮應(yīng)用中使用 所創(chuàng)建的表示。
5. 根據(jù)權(quán)利要求1所述的方法,進一步包括在內(nèi)容搜索應(yīng)用中 使用所創(chuàng)建的表示。
6. 根據(jù)權(quán)利要求1所述的方法,其中所述第一 SVG文檔的最小 邏輯表示的創(chuàng)建包括移除所述第一 SVG文檔中的至少一個冗余、未 引用或未使用的SVG元素或注釋。
7. 根據(jù)權(quán)利要求1所述的方法,其中所述第一 SVG文檔的最小 邏輯表示的創(chuàng)建包括執(zhí)行從包括下面動作的組中選擇的至少 一個動 作,該組包括在所述第一SVG文檔中,擴展至少一個內(nèi)部引用、 擴展至少一個定義、解析至少一個引用、將至少一個相對URL解析 成絕對URL,以及它們的組合。
8. 根據(jù)權(quán)利要求1所述的方法,其中所述第一 SVG文檔的所述最小邏輯表示的創(chuàng)建包括解析所述第一 SVG文檔內(nèi)的至少 一 個屬性。
9. 根據(jù)權(quán)利要求1所述的方法,其中所述相似性量度的使用包 括使用所述第一邏輯最小化SVG DOM樹和所述第二邏輯最小化 SVG DOM樹之間的交集來創(chuàng)建相似性的百分比度量。
10. 根據(jù)權(quán)利要求1所述的方法,其中所述相似性量度的使用包 括定義所述第一邏輯最小化SVG DOM樹和所述第二邏輯最小化 SVG DOM樹之間的距離度量。
11. 根據(jù)權(quán)利要求1所述的方法,其中相似性量度用于度量所述 第一邏輯最小化SVG DOM樹和所述第二邏輯最小化SVG DOM樹 之間的內(nèi)容相似性、結(jié)構(gòu)相似性和位置內(nèi)容相似性。
12. —種用于比較SVG文檔的計算機程序產(chǎn)品,包括 用于創(chuàng)建第一 SVG文檔的最小邏輯表示的計算機代碼;用于在所述第一 SVG文檔的文檔對象模型的最小邏輯表示上執(zhí) 行樹同構(gòu)性,以便創(chuàng)建第一邏輯最小化SVGDOM樹的計算機代碼;用于使用相似性量度來將第 一邏輯最小化SVG DOM樹與第二 SVG文檔的第二邏輯最小化SVG DOM樹進行比較的計算機代碼; 以及用于從所述第一邏輯最小化SVG DOM樹和所述第二邏輯最小 化SVG DOM樹的比較來創(chuàng)建所計算的相似性信息的表示的計算機 代碼。
13. 根據(jù)權(quán)利要求12所述的計算機程序產(chǎn)品,其中所述第一 SVG文檔的最小邏輯表示的創(chuàng)建包括移除所述第一 SVG文檔中的至 少一個冗余、未引用或未使用的SVG元素或注釋。
14. 根據(jù)權(quán)利要求12所述的計算機程序產(chǎn)品,其中所述第一 SVG文檔的最小邏輯表示的創(chuàng)建包括執(zhí)行從包括下面動作的組中選 擇的至少一個動作,該組包括在第一SVG文檔中,擴展至少一個 內(nèi)部引用、擴展至少一個定義、解析至少一個引用、將至少一個相 對URL解析成絕對URL,以及它們的組合。
15. 根據(jù)權(quán)利要求12所述的計算機程序產(chǎn)品,其中所述第一SVG文檔的所述最小邏輯表示的創(chuàng)建包括解析所述第一 SVG文檔內(nèi) 的至少一個屬性。
16. 根據(jù)權(quán)利要求12所述的計算機程序產(chǎn)品,其中所述相似性 量度的使用包括使用所述第一邏輯最小化SVG DOM樹和所述第二 邏輯最小化SVG DOM樹之間的交集來創(chuàng)建相似性的百分比度量。
17. 根據(jù)權(quán)利要求12所述的計算機程序產(chǎn)品,其中所述相似性 量度的使用包括定義所述第一邏輯最小化SVG DOM樹和所述第二 邏輯最小化SVG DOM樹之間的距離度量。
18. —種電子設(shè)備,包括 處理器;以及存儲單元,其可操作地連接到所述處理器并且包括用于創(chuàng)建第一 SVG文檔的最小邏輯表示的計算機代碼; 用于在所述第一 SVG文檔的文檔對象模型的最小邏輯表示上執(zhí)行樹同構(gòu)性,以便創(chuàng)建第一邏輯最小化SVGDOM樹的計算機代碼;用于使用相似性量度來將所述第一邏輯最小化SVG DOM 樹與第二 SVG文檔的第二邏輯最小化SVG DOM樹進行比較的計算 機代碼;以及用于從所述第一邏輯最小化SVG DOM樹和所述第二邏輯 最小化SVG DOM樹的比較來創(chuàng)建所計算的相似性信息的表示的計算機代碼。
19. 根據(jù)權(quán)利要求18所述的電子設(shè)備,其中所述第一SVG文檔 的最小邏輯表示的創(chuàng)建包括移除所述第一 SVG文檔中的至少一個冗 余、未引用或未使用的SVG元素或注釋。
20. 根據(jù)權(quán)利要求18所述的電子設(shè)備,其中所述第一SVG文檔 的最小邏輯表示的創(chuàng)建包括執(zhí)行從包括下面動作的組中選擇的至少 一個動作,該組包括在第一SVG文檔中,擴展至少一個內(nèi)部引用、 擴展至少一個定義、解析至少一個引用、將至少一個相對URL解析成絕對URL,以及它們的組合。
21. 根據(jù)權(quán)利要求18所述的電子設(shè)備,其中所述相似性量度的 使用包括使用所述第一邏輯最小化SVG DOM樹和所述第二邏輯最 小化SVG DOM樹之間的交集來創(chuàng)建相似性的百分比度量。
22. 根據(jù)權(quán)利要求18所述的電子設(shè)備,其中所述相似性量度的 使用包括定義所述第一邏輯最小化SVG DOM樹和所述第二邏輯最 小化SVG DOM樹之間的距離度量。
全文摘要
一種用于測量SVG文檔之間相似性的系統(tǒng)和方法。本發(fā)明涉及將各文檔降低到它們的最小邏輯表示,然后使用樹同構(gòu)化技術(shù)來分析該表示。接下來,應(yīng)用可以使用該比較數(shù)據(jù)來更有效地執(zhí)行動作,例如內(nèi)容壓縮、內(nèi)容流式傳輸以及內(nèi)容搜索。
文檔編號G06F17/22GK101589384SQ200680043476
公開日2009年11月25日 申請日期2006年10月6日 優(yōu)先權(quán)日2005年10月7日
發(fā)明者M·英格拉西亞, S·奇圖里, T·卡平, V·塞特盧爾 申請人:諾基亞公司