背景技術(shù):
“結(jié)構(gòu)化數(shù)據(jù)”是指根據(jù)預(yù)先定義的數(shù)據(jù)模型組織的信息。結(jié)構(gòu)化數(shù)據(jù)經(jīng)常存儲在諸如關(guān)系數(shù)據(jù)庫的數(shù)據(jù)庫中。盡管許多網(wǎng)站是從結(jié)構(gòu)化數(shù)據(jù)動態(tài)生成的,但是當(dāng)這些數(shù)據(jù)被格式化為html時,數(shù)據(jù)變?yōu)榉墙Y(jié)構(gòu)化的。此外,用戶經(jīng)常希望將從互聯(lián)網(wǎng)網(wǎng)站或其它源復(fù)制的內(nèi)容保存到“記事本”應(yīng)用(例如,microsoft
技術(shù)實現(xiàn)要素:
公開了用于使得結(jié)構(gòu)化數(shù)據(jù)能夠以保持使用諸如記事本應(yīng)用的內(nèi)容應(yīng)用來編輯視覺內(nèi)容的能力的方式與視覺內(nèi)容相關(guān)聯(lián)的系統(tǒng)和技術(shù)。技術(shù)和系統(tǒng)使得能夠?qū)⒄Z義符號引入到指示視覺內(nèi)容的結(jié)構(gòu)化數(shù)據(jù)的視覺內(nèi)容的所選擇的區(qū)域中,允許通過常見的搜索技術(shù)和搜索引擎更容易地對內(nèi)容進(jìn)行搜索和訪問,以及允許將查詢、結(jié)合、以及其它熟悉的數(shù)據(jù)管理技術(shù)應(yīng)用于以前非結(jié)構(gòu)化的內(nèi)容。
此外,將語義符號分配給視覺內(nèi)容,以使得語義符號的引入不妨礙用戶利用內(nèi)容應(yīng)用來查看或編輯視覺內(nèi)容。有利地,包含語義符號不會導(dǎo)致不理解語義符號的現(xiàn)有視覺編輯工具停止恰當(dāng)?shù)剡\行。
提供本發(fā)明內(nèi)容以便以簡化的形式來引入在下面的具體實施方式中進(jìn)一步描述的概念的選擇。本發(fā)明內(nèi)容并非旨在識別所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也并非旨在用于限制所要求保護(hù)的主題的范圍。
附圖說明
圖1示出了其中可以執(zhí)行用于結(jié)構(gòu)化內(nèi)容存儲和取回的系統(tǒng)和技術(shù)的某些實現(xiàn)方式的示例操作環(huán)境。
圖2a示出了用于結(jié)構(gòu)化數(shù)據(jù)存儲和取回的示例處理流程。
圖2b示出了視覺內(nèi)容和視覺內(nèi)容內(nèi)的內(nèi)容容器的表示的示例。
圖2c-2d示出了存儲標(biāo)記語言的示例。
圖3a示出了用于接收和處理對內(nèi)容存儲庫中的視覺內(nèi)容進(jìn)行更新的請求的示例處理流程。
圖3b-3c示出了用戶對視覺內(nèi)容進(jìn)行的任意編輯以及內(nèi)容存儲庫中的對應(yīng)結(jié)果的具體示例。
圖4示出了用于實現(xiàn)結(jié)構(gòu)化數(shù)據(jù)api的示例處理流程。
圖5示出了示例說明在所描述的內(nèi)容存儲服務(wù)的一些實現(xiàn)方式中使用的計算設(shè)備或系統(tǒng)的組件的框圖。
圖6示出了其中可以執(zhí)行用于結(jié)構(gòu)化內(nèi)容存儲和取回的技術(shù)的實現(xiàn)方式的示例系統(tǒng)架構(gòu)。
具體實施方式
公開了用于使得結(jié)構(gòu)化數(shù)據(jù)能夠以保持使用諸如記事本應(yīng)用的內(nèi)容應(yīng)用來編輯視覺內(nèi)容的能力的方式與視覺內(nèi)容相關(guān)聯(lián)的系統(tǒng)和技術(shù)。
所公開的技術(shù)和系統(tǒng)提供了產(chǎn)生若干技術(shù)益處的技術(shù)特征。某些技術(shù)和系統(tǒng)使得能夠?qū)⒄Z義符號引入到指示視覺內(nèi)容的結(jié)構(gòu)化數(shù)據(jù)的視覺內(nèi)容的所選擇的區(qū)域中。將結(jié)構(gòu)化數(shù)據(jù)增加到視覺內(nèi)容允許通過常見的搜索技術(shù)和搜索引擎更容易地對內(nèi)容進(jìn)行搜索和訪問,以及允許將查詢、結(jié)合、以及其它熟悉的數(shù)據(jù)管理技術(shù)應(yīng)用于以前非結(jié)構(gòu)化的內(nèi)容。
此外,將語義符號分配給視覺內(nèi)容,以使得語義符號的引入不妨礙用戶利用內(nèi)容應(yīng)用來查看或編輯視覺內(nèi)容。有利地,包含語義符號不會導(dǎo)致不理解語義符號的現(xiàn)有視覺編輯工具停止恰當(dāng)?shù)剡\行。因此,技術(shù)和系統(tǒng)能夠?qū)F(xiàn)有的內(nèi)容存儲庫變換為具有可延展的視覺內(nèi)容和結(jié)構(gòu)化數(shù)據(jù)方面的混合的內(nèi)容存儲庫,而不需要對現(xiàn)有軟件中的查看和編輯機(jī)制進(jìn)行修正。
涉及網(wǎng)站上的烹飪食譜的示例場景可以是說明性的。在這里,用戶希望通過將食譜存儲在記事本應(yīng)用(例如,microsoft
然而,使用本文描述的技術(shù)和系統(tǒng),可以保持、修改、和/或增強(qiáng)所復(fù)制的內(nèi)容的語義結(jié)構(gòu)。例如,在典型的食譜中,信息被組織為“原料”和“步驟”。使用所描述的技術(shù)和系統(tǒng),原料和步驟可以接收不可見的注釋,其將單獨的原料和步驟指示為結(jié)構(gòu)化數(shù)據(jù)元素。稍后對食譜(或其它內(nèi)容)進(jìn)行編輯將保持結(jié)構(gòu)化數(shù)據(jù),因為語義符號不會中斷、擾亂由用戶執(zhí)行的視覺編輯過程,或以其它方式對其可見。然后,在存在語義符號的情況下,能夠以附加的方式來使用和操縱內(nèi)容。例如,原料和量的列表能夠通過購物清單應(yīng)用取回,購物清單應(yīng)用將針對一周的食譜來計算在每周的購物之旅期間要購買的原料的類型和量。
某些實現(xiàn)方式包括內(nèi)容存儲服務(wù),其能夠接收視覺內(nèi)容、確定與視覺內(nèi)容相關(guān)的結(jié)構(gòu)化數(shù)據(jù)、以及將指示結(jié)構(gòu)化數(shù)據(jù)的語義符號關(guān)聯(lián)到視覺內(nèi)容。一些實現(xiàn)方式包括應(yīng)用編程接口,其用于增強(qiáng)對內(nèi)容存儲庫中的結(jié)構(gòu)化數(shù)據(jù)的訪問。
圖1示出了其中可以執(zhí)行用于結(jié)構(gòu)化內(nèi)容存儲和取回的系統(tǒng)和技術(shù)的某些實現(xiàn)方式的示例操作環(huán)境。在圖1中,內(nèi)容存儲服務(wù)100能夠?qū)崿F(xiàn)用于將語義符號應(yīng)用于內(nèi)容存儲庫以及從內(nèi)容存儲庫中取回結(jié)構(gòu)化數(shù)據(jù)的技術(shù),如關(guān)于圖2a、圖3a、以及圖4中的處理流程所描述的。
在一些情況下,內(nèi)容經(jīng)由客戶端110進(jìn)入內(nèi)容存儲服務(wù)100??蛻舳?10可以包括允許查看、存儲、編輯、或創(chuàng)作視覺內(nèi)容的內(nèi)容應(yīng)用111。示例內(nèi)容應(yīng)用111是協(xié)助用戶存儲從各種源創(chuàng)建和采集的內(nèi)容的記事本應(yīng)用。記事本應(yīng)用的示例包括microsoft
在一些實現(xiàn)方式中,內(nèi)容應(yīng)用111將內(nèi)容存儲在與用戶相關(guān)聯(lián)的云服務(wù)儲存庫中的一個或多個內(nèi)容存儲庫中。內(nèi)容存儲服務(wù)100可以是云服務(wù)的組件。在一些情況下,內(nèi)容存儲庫可以本地存儲在客戶端110上。如果內(nèi)容存儲庫對于客戶端是本地的,則內(nèi)容存儲服務(wù)100可以被本地化在客戶端上。此外,內(nèi)容存儲庫可以主要存儲在云中,但是在客戶端110上具有內(nèi)容存儲庫的本地副本以用于離線可訪問性;各種過程可以同步云副本和本地副本。
一些內(nèi)容應(yīng)用能夠?qū)Χ喾N類型的視覺內(nèi)容起作用。如本文所使用的“視覺內(nèi)容”是指:例如,可以在內(nèi)容應(yīng)用內(nèi)顯示的文本、圖像、嵌入式二進(jìn)制文件、多媒體文件、附接的文檔、以及手寫墨跡筆劃。視覺內(nèi)容能夠包括描述各種單獨的內(nèi)容項及其與彼此的關(guān)系的格式化、樣式、布局、以及其它可見的呈現(xiàn)方面。有時,視覺內(nèi)容是使用體現(xiàn)信息(例如,文本情況下的“單詞”)以及控制信息如何被顯示(例如,文本中的單詞是粗體、12號timesnewroman字體)二者的格式化語言來描述的。然后,內(nèi)容應(yīng)用以格式化語言描述的方式將顯示器上的內(nèi)容顯現(xiàn)給用戶。格式化語言的示例是超文本標(biāo)記語言(html)和富文本格式化(rtf)語言。
有時,視覺內(nèi)容是作為從另一內(nèi)容源被復(fù)制/粘貼、剪切、或以其它方式記錄的結(jié)果而進(jìn)入內(nèi)容應(yīng)用的內(nèi)容段。例如,用戶可能希望復(fù)制正在瀏覽器中顯示的網(wǎng)頁的視覺內(nèi)容的區(qū)域,例如,當(dāng)用戶希望將烹飪食譜復(fù)制/粘貼或網(wǎng)絡(luò)剪切到記事本應(yīng)用中供稍后使用時。當(dāng)從網(wǎng)頁“剪切”內(nèi)容的選擇時,接收所剪切的內(nèi)容的目的內(nèi)容應(yīng)用確定是僅使用信息(原始文本和/或圖像)還是信息加格式化描述。
有時,可能如果目的內(nèi)容應(yīng)用本機(jī)地使用html,則目的內(nèi)容應(yīng)用可以按原樣將html粘貼到顯現(xiàn)應(yīng)用中。在其它情況下,目的內(nèi)容應(yīng)用嘗試盡可能忠實于初始顯現(xiàn)地顯示內(nèi)容,但是相反在顯現(xiàn)之前將視覺內(nèi)容的格式化語言命令轉(zhuǎn)換為不同類型的格式化語言。在另外的其它情況下,僅信息方面(即,沒有進(jìn)行格式化的普通可見文本)被目的內(nèi)容應(yīng)用捕獲和/或顯現(xiàn)。
剪切板112可以在客戶端110處可用。剪切板112是本地運行的應(yīng)用,其能夠用于針對用戶收集和捕獲內(nèi)容。通過剪切板112,用戶能夠選擇剪切整個頁面,提取整個頁面的部分、頁面的一個或多個區(qū)域和/或頁面上的已識別對象,例如,圖像。作為一些示例,剪切板112可以是網(wǎng)絡(luò)剪切板、在操作系統(tǒng)上運行的剪切工具、具有剪切特征或內(nèi)容應(yīng)用的特征的應(yīng)用。剪切板112可以與內(nèi)容的目的應(yīng)用直接相關(guān)聯(lián),或者可以不與內(nèi)容的目的應(yīng)用直接相關(guān)聯(lián)。
網(wǎng)絡(luò)剪切板典型地從網(wǎng)站剪切內(nèi)容,并將內(nèi)容插入到內(nèi)容應(yīng)用111(例如,記事本應(yīng)用)或剪切板關(guān)聯(lián)到的其它應(yīng)用中。網(wǎng)絡(luò)剪切板一般在客戶端110處的網(wǎng)絡(luò)瀏覽器上運行。作為示例,網(wǎng)絡(luò)剪切板可以以javascript來實現(xiàn),并且能夠與網(wǎng)絡(luò)瀏覽器互操作(并且在一些情況下與其集成)。因為每個網(wǎng)絡(luò)瀏覽器具有不同的能力,所以可以基于網(wǎng)絡(luò)瀏覽器來配置網(wǎng)絡(luò)剪切板。在一些情況下,剪切板112作為網(wǎng)絡(luò)瀏覽器的增加件、插件、或書簽工具被包括,以剪切在網(wǎng)絡(luò)瀏覽器中顯現(xiàn)的內(nèi)容。在一些情況下,剪切板作為操作系統(tǒng)(未示出)的特征被包括,以捕獲正在顯示器上顯現(xiàn)的任何內(nèi)容(類似于截屏功能)。在一些情況下,剪切板能夠作為內(nèi)容應(yīng)用111的網(wǎng)絡(luò)功能或增加件被包括。
能夠通過剪切板112將內(nèi)容發(fā)送到用戶的記事本或其它內(nèi)容應(yīng)用111。內(nèi)容應(yīng)用可以與內(nèi)容存儲服務(wù)100進(jìn)行通信以存儲內(nèi)容115,并且內(nèi)容存儲服務(wù)100可以制定用于與內(nèi)容相關(guān)聯(lián)的結(jié)構(gòu)化數(shù)據(jù)的語義符號。
“內(nèi)容存儲庫”是指包含視覺內(nèi)容、格式化指令、以及其它語義或結(jié)構(gòu)化數(shù)據(jù)元素中的任何或全部的存儲結(jié)構(gòu)。例如,內(nèi)容存儲庫可以是文件(例如,html文件或文字處理文件)、包含多個內(nèi)容存儲庫的文件內(nèi)的邏輯劃分、和/或存儲在關(guān)系數(shù)據(jù)庫管理系統(tǒng)中的一組數(shù)據(jù)庫記錄。
內(nèi)容存儲庫能夠包括以圖形結(jié)構(gòu)布置的一個或多個“內(nèi)容容器”。在內(nèi)容存儲庫的上下文中,圖形結(jié)構(gòu)是指允許一些容器或元素嵌套在更高級別容器或元素內(nèi)的分層(或“樹形”)布置。因此,以圖形結(jié)構(gòu)布置的內(nèi)容存儲庫包含分層地布置的一個或多個內(nèi)容容器。例如,在html中,內(nèi)容容器可以通過匹配開放和關(guān)閉標(biāo)簽對來進(jìn)行表示,例如,“<div></div>”標(biāo)簽對。當(dāng)“<div>”標(biāo)簽對包圍其它標(biāo)簽對時,“<div>”標(biāo)簽對是由其包圍的任何標(biāo)簽對的父親容器。
內(nèi)容容器能夠具有信息方面、格式化方面、以及結(jié)構(gòu)化數(shù)據(jù)方面中的任何、全部,或者不具有其中的任一個。內(nèi)容容器的信息方面和格式化方面包括在內(nèi)容容器的視覺方面中,并且是正常被認(rèn)為是“視覺內(nèi)容”的方面中的一部分,因為這些方面對于用戶是可見的。例如,在html中,內(nèi)容容器可能具有元素“<b>蛋糕食譜</b>”。該內(nèi)容容器包括信息方面(“蛋糕食譜”)和格式化方面(“<b>”和“</b>”標(biāo)簽圍繞信息的結(jié)果),其表示在查看時單詞“蛋糕食譜”應(yīng)當(dāng)以粗體字來顯示。如所指出的,內(nèi)容容器可以分層地布置,如當(dāng)內(nèi)容容器“面粉”和“糖”是描述蛋糕食譜中的原料的列表的父親內(nèi)容容器“原料”的孩子容器時。因此,內(nèi)容容器與其它內(nèi)容容器的關(guān)系還能夠經(jīng)由格式化元素進(jìn)行表達(dá),并反映在格式化方面中。
內(nèi)容容器還能夠缺少信息方面和/或缺少格式化方面。例如,如果“<ul>”標(biāo)簽(無序列表html元素)在其中嵌套由“<li>”標(biāo)簽指示的原料的項目符號列表(bulletedlist),則“<ul>”標(biāo)簽缺少信息方面,但是具有表達(dá)列表項彼此之間的關(guān)系的格式化方面。一些內(nèi)容容器能夠完全缺少視覺方面,絕大多數(shù)用于將其它內(nèi)容容器分組在一起,可能用于將結(jié)構(gòu)化數(shù)據(jù)分配給若干其它內(nèi)容容器。例如,由“<div>”元素表示的內(nèi)容容器能夠表達(dá)關(guān)于<div>塊內(nèi)的孩子內(nèi)容容器中的全部的性質(zhì),但是否則不表達(dá)任何視覺方面。
有時,內(nèi)容存儲服務(wù)100創(chuàng)建新的內(nèi)容存儲庫作為對于存儲內(nèi)容115的請求的一部分,例如,當(dāng)要存儲的內(nèi)容是記事本應(yīng)用中的新條目或文檔的一部分時。有時,內(nèi)容120可以增加到或修改現(xiàn)有的內(nèi)容存儲庫。
對內(nèi)容進(jìn)行變換的示例在圖1所示的虛線圓形分區(qū)內(nèi)部進(jìn)行描繪。所描繪的是具有若干內(nèi)容容器121的視覺內(nèi)容120的選擇。示例是“蛋糕食譜”(較早描述的),其具有原料、步驟、以及照片,并且是從網(wǎng)頁上剪切的。內(nèi)容存儲服務(wù)100能夠?qū)⒖梢妰?nèi)容的選擇變換為具有結(jié)構(gòu)化數(shù)據(jù)125的內(nèi)容。內(nèi)容存儲服務(wù)100通過將非視覺語義符號126(例如,并非旨在在顯示器上可見地顯現(xiàn)的標(biāo)識符、標(biāo)簽、元素、屬性、性質(zhì)、或描述符)分配給一個或多個內(nèi)容容器來將可見內(nèi)容120變換為具有結(jié)構(gòu)化數(shù)據(jù)125的內(nèi)容。關(guān)于圖2b描述了非視覺語義符號的示例。
由內(nèi)容存儲服務(wù)100存儲和變換的內(nèi)容可以由其它客戶端類型進(jìn)行訪問和/或修改。客戶端130表示具有內(nèi)容應(yīng)用131的客戶端,內(nèi)容應(yīng)用131具有查看和編輯視覺內(nèi)容的能力。內(nèi)容應(yīng)用131能夠是瀏覽器、記事本、或生產(chǎn)力應(yīng)用,包括在網(wǎng)絡(luò)瀏覽器內(nèi)部或移動設(shè)備或可穿戴設(shè)備上運行的應(yīng)用。內(nèi)容應(yīng)用131可以具有各種能力(例如,查看、編輯),這取決于應(yīng)用類型和應(yīng)用正在其上運行的設(shè)備形狀因子。有時,內(nèi)容應(yīng)用131是與如關(guān)于內(nèi)容應(yīng)用111所描述的、發(fā)起內(nèi)容的剪切和存儲的應(yīng)用相同類型的應(yīng)用,或者實際上是完全相同的應(yīng)用。然而,有時,內(nèi)容應(yīng)用131可以是不同類型的內(nèi)容應(yīng)用、相同內(nèi)容應(yīng)用的不同版本(例如,較舊版本)、或者相同應(yīng)用的不同設(shè)備變型,例如,移動設(shè)備版本(例如,
內(nèi)容應(yīng)用131是能夠查看和編輯內(nèi)容存儲庫中的視覺內(nèi)容同時保留對內(nèi)容存儲庫中的結(jié)構(gòu)化數(shù)據(jù)和語義符號不可知的應(yīng)用的示例。內(nèi)容應(yīng)用131可以請求來自內(nèi)容存儲服務(wù)100的內(nèi)容135,例如,當(dāng)記事本應(yīng)用請求查看存儲了較早剪切的內(nèi)容的記事本筆記或文檔(即,內(nèi)容存儲庫)時。內(nèi)容存儲服務(wù)100可以返回內(nèi)容136。所返回的內(nèi)容可以包括利用透明的語義符號(例如,如在元素125和126中示出的)進(jìn)行變換的視覺內(nèi)容。
內(nèi)容應(yīng)用131能夠查看內(nèi)容和/或進(jìn)一步編輯內(nèi)容,例如,通過增加新的視覺內(nèi)容、移除視覺內(nèi)容、或修改視覺內(nèi)容的方面。然后可以向內(nèi)容存儲服務(wù)100做出對存儲在內(nèi)容存儲庫中的內(nèi)容137進(jìn)行更新的請求。如圖3a所描述的,內(nèi)容存儲服務(wù)100可以修改內(nèi)容存儲庫中的視覺內(nèi)容。取決于對視覺內(nèi)容所做的改變的類型,內(nèi)容存儲服務(wù)100可以移除視覺內(nèi)容和相關(guān)聯(lián)的語義符號、插入用于新的視覺內(nèi)容的新的語義符號、或者改變內(nèi)容容器的信息或格式化方面。
對視覺內(nèi)容進(jìn)行外觀替代(例如,格式化)可以根本不影響語義符號。對視覺元素的信息內(nèi)容的改變可以不影響語義符號。使用食譜示例,改正原料的拼錯可以改變內(nèi)容容器的信息方面,但是不改變其數(shù)據(jù)類型。此外,如果菜品的食譜包含原料“蒜辣椒醬”,則用戶可能編輯食譜以指定辣椒醬的優(yōu)選品牌名稱。這樣的編輯可能會改變內(nèi)容容器的信息方面,但是不一定導(dǎo)致語義符號或結(jié)構(gòu)化數(shù)據(jù)方面的改變。
圖3a-3c中示出了包括內(nèi)容應(yīng)用131的實現(xiàn)方式的示例處理流程和相關(guān)示例。
由內(nèi)容存儲服務(wù)100存儲和變換的內(nèi)容可以由查看、使用、或改變與語義符號相關(guān)聯(lián)的結(jié)構(gòu)化數(shù)據(jù)的客戶端進(jìn)行訪問??蛻舳?40包括結(jié)構(gòu)化數(shù)據(jù)應(yīng)用141,其可以請求來自內(nèi)容存儲服務(wù)100的結(jié)構(gòu)化數(shù)據(jù)145。在一些實現(xiàn)方式中,內(nèi)容存儲服務(wù)100暴露應(yīng)用編程接口,其使得結(jié)構(gòu)化數(shù)據(jù)應(yīng)用141能夠跨單個內(nèi)容存儲庫或跨多個內(nèi)容存儲庫來查詢特定類型或值的結(jié)構(gòu)化數(shù)據(jù)。然后內(nèi)容存儲服務(wù)100返回與匹配查詢的結(jié)構(gòu)化數(shù)據(jù)相關(guān)聯(lián)的內(nèi)容和/或結(jié)構(gòu)化數(shù)據(jù)146。例如,結(jié)構(gòu)化數(shù)據(jù)應(yīng)用141能夠聯(lián)系內(nèi)容存儲服務(wù)100以針對包含“櫻桃”的所保存的甜點來查詢內(nèi)容存儲庫中的用戶的儲存庫?;蛘?,結(jié)構(gòu)化數(shù)據(jù)應(yīng)用141可以使得用戶能夠創(chuàng)建合并要購買以用于一組所選擇的食譜的原料的單個購物清單。關(guān)于圖4更全面地描述了在用于結(jié)構(gòu)化數(shù)據(jù)的應(yīng)用編程接口中包括的技術(shù)。
應(yīng)當(dāng)注意,在圖1中使內(nèi)容應(yīng)用111和131以及結(jié)構(gòu)化數(shù)據(jù)應(yīng)用141分隔到分隔的客戶端上并非旨在是限制性的。單個內(nèi)容應(yīng)用可以具有由應(yīng)用111、131、以及141指示的存儲、編輯、查看、以及結(jié)構(gòu)化數(shù)據(jù)能力中的任何或全部。另外,許多類型的內(nèi)容應(yīng)用和結(jié)構(gòu)化數(shù)據(jù)應(yīng)用能夠駐留在單個客戶端上。
圖2a示出了用于結(jié)構(gòu)化數(shù)據(jù)存儲和取回的示例處理流程。在一些實現(xiàn)方式中,圖2a中的處理流程可以由如圖1所描述的內(nèi)容存儲服務(wù)100來執(zhí)行。內(nèi)容存儲服務(wù)100可以從內(nèi)容應(yīng)用111接收存儲視覺內(nèi)容的指示(200),例如,關(guān)于圖1所描述的。
如所指出的,內(nèi)容容器能夠以各種方式包圍視覺內(nèi)容。因此,響應(yīng)于接收內(nèi)容選擇,內(nèi)容存儲服務(wù)100從適合于分配語義符號的視覺內(nèi)容中確定一個或多個內(nèi)容容器(201)。例如,如果項的列表指示食譜的原料,則可以以多種方式在內(nèi)容容器的層級中增加表示作為原料的項的語義符號。在一種情況下,可以將指示結(jié)構(gòu)化數(shù)據(jù)類型為“原料”的語義符號分配給父親列表容器,以表示列表中的每個項是一種類型的原料中的一種。在另一種情況下,可以將指示結(jié)構(gòu)化數(shù)據(jù)類型為“原料”的語義符號分配給單獨的原料的內(nèi)容容器中的每一個。
在一些情況下,內(nèi)容存儲服務(wù)100可以確定視覺內(nèi)容中不存在適當(dāng)?shù)膬?nèi)容容器。在這些情況下,可以創(chuàng)建一個或多個內(nèi)容容器并將其插入到視覺內(nèi)容圖形結(jié)構(gòu)中的適當(dāng)位置處,以接收語義符號的分配。
當(dāng)適當(dāng)?shù)囊粋€或多個內(nèi)容容器已經(jīng)被標(biāo)識和/或創(chuàng)建時,內(nèi)容存儲服務(wù)100確定與視覺內(nèi)容相關(guān)聯(lián)的結(jié)構(gòu)化數(shù)據(jù)(202)。取決于實現(xiàn)方式的本質(zhì)和特定視覺內(nèi)容的有區(qū)別的性質(zhì),確定與視覺內(nèi)容相關(guān)的結(jié)構(gòu)化數(shù)據(jù)可以以各種方式來執(zhí)行。
在一些情況下,視覺內(nèi)容包含由內(nèi)容的創(chuàng)建者增加以指示內(nèi)容的數(shù)據(jù)類型或?qū)傩缘臉?biāo)記語言。例如,內(nèi)容創(chuàng)建者(例如,網(wǎng)站開發(fā)者)可以將從“模式(schema)提供者”獲得的數(shù)據(jù)類型信息(例如,“模式”)增加到網(wǎng)頁,以便于使得對于搜索引擎而言內(nèi)容更加可訪問且可搜索。來自模式提供者的模式可以與“標(biāo)記格式”一起使用,以利用結(jié)構(gòu)化數(shù)據(jù)來加強(qiáng)視覺內(nèi)容。模式提供者的示例是schema.org和googlerichsnippets。模式提供者共享模式的集合(共享的標(biāo)記詞匯表),其能夠在利用標(biāo)記格式來標(biāo)記內(nèi)容(例如,html頁面)時使用。模式描述特定種類的內(nèi)容的數(shù)據(jù)類型和屬性信息。例如,模式可能指示某些內(nèi)容是“電影”,以及電影具有某些性質(zhì),例如,“導(dǎo)演”、“標(biāo)題”、以及“發(fā)行日期”。來自模式提供者的標(biāo)準(zhǔn)化模式被搜索服務(wù)識別,然后其能夠以更加明確的方式來解釋網(wǎng)頁上的信息,使得搜索更加準(zhǔn)確。
有時,模式是使用“標(biāo)記格式”引入到以html描述的內(nèi)容中的。標(biāo)記格式的示例是微數(shù)據(jù)(microdata)、rdfa、以及json-ld。標(biāo)記格式提供修改html以使得搜索引擎能夠處理具有匹配到模式的內(nèi)容的單獨的網(wǎng)頁的標(biāo)準(zhǔn)化方法。
例如,通過使用標(biāo)識用于“<div>”元素范圍內(nèi)的內(nèi)容的模式的“<div>”標(biāo)簽屬性,微數(shù)據(jù)標(biāo)記格式使用schema.org詞匯表來描述內(nèi)容。然后通過圍繞內(nèi)容的另外的屬性來標(biāo)識單獨的內(nèi)容的模式的性質(zhì)的值。
使用schema.org詞匯表來描述內(nèi)容的微數(shù)據(jù)標(biāo)記格式的示例如下面的表1所示:
表1:微數(shù)據(jù)的示例
在標(biāo)記格式指示模式標(biāo)識符被包括在內(nèi)容中的情況下,內(nèi)容存儲服務(wù)100可以具有容易訪問的數(shù)據(jù)類型的源,其能夠用于確定視覺內(nèi)容中包含的內(nèi)容元素的類型。內(nèi)容存儲服務(wù)100可以使用現(xiàn)有的結(jié)構(gòu)化數(shù)據(jù)標(biāo)記來確定用于語義符號的某些結(jié)構(gòu)化數(shù)據(jù)。能夠使用諸如“微數(shù)據(jù)2rdf”服務(wù)或“節(jié)點-模式-org”庫的工具以熟悉的方式從具有現(xiàn)有標(biāo)記的視覺內(nèi)容中提取數(shù)據(jù)類型信息,以用于以編程方式解析利用常見的模式標(biāo)記的內(nèi)容。在某些情況下,當(dāng)內(nèi)容存儲服務(wù)將語義符號分配給視覺內(nèi)容時,現(xiàn)有標(biāo)記可以被移動、改變、和/或移除。
在一些實現(xiàn)方式中,內(nèi)容存儲服務(wù)100通過分析視覺內(nèi)容來確定結(jié)構(gòu)化數(shù)據(jù)。對視覺內(nèi)容的分析可以發(fā)生于例如當(dāng)網(wǎng)站運營方尚未提供指示模式信息的標(biāo)記時。
在一些實現(xiàn)方式中使用的用于分析視覺內(nèi)容的技術(shù)是通過對視覺內(nèi)容與已知內(nèi)容的模板的集合進(jìn)行比較來標(biāo)識用于視覺內(nèi)容的可能模式。內(nèi)容存儲服務(wù)100可以存儲已知內(nèi)容的一個或多個這樣的模板。例如,對包含食譜的視覺內(nèi)容的剪切經(jīng)常具有包含若干視覺內(nèi)容分區(qū)的熟悉的視覺結(jié)構(gòu)。這些分區(qū)包括食譜標(biāo)題、原料的列表、以及有時被分隔為段落的步驟/動作的列表。在一些情況下,原料的列表和步驟的列表如這樣地被具體標(biāo)注。這些分區(qū)有助于標(biāo)識視覺內(nèi)容的類型,以使得模式信息能夠被確定。
在一些實現(xiàn)方式中,內(nèi)容存儲服務(wù)100已經(jīng)存儲了若干預(yù)先定義的內(nèi)容模板,其描繪了用于某些特定類型的內(nèi)容(例如,食譜、電影、書籍、或音樂)的常見或可能的視覺布局。在一些情況下,這些視覺內(nèi)容模板可以通過從常見的內(nèi)容網(wǎng)站(例如,recip.com或imdb.com)搜集格式化語言來確定。例如,“recipe.com”有時利用html格式化代碼來指示其原料列表,例如,“<ulid="ingredientlist">”?!癷d”屬性由內(nèi)容存儲服務(wù)100識別,以匹配由內(nèi)容存儲服務(wù)100存儲以用于“recipe.com”食譜的內(nèi)容模板。然后內(nèi)容存儲服務(wù)100能夠使用已知樣式(pattern)來處理結(jié)構(gòu)化數(shù)據(jù)的內(nèi)容,知道嵌套在具有“id=ingredientlist”的“ul”元素內(nèi)的列表項是食譜的原料。
在一些情況下,可以使用更廣義的模式確定方法。例如,被格式化為項目符號列表的視覺內(nèi)容(例如,由具有嵌套的“<li>”標(biāo)簽的“<ul>”標(biāo)簽以html指示的)可以向內(nèi)容存儲服務(wù)指示內(nèi)容包含具有子實體的實體。內(nèi)容存儲服務(wù)100可以關(guān)于內(nèi)容的信息方面執(zhí)行字典或網(wǎng)絡(luò)搜索,以協(xié)助標(biāo)識視覺內(nèi)容中的實體。例如,通過使用文本匹配或單詞查找,內(nèi)容存儲服務(wù)可以確定列表包含“原料”,并且因此每個列表項表示單獨的原料。然后,內(nèi)容存儲服務(wù)100可以聯(lián)系模式提供者以獲得用于“原料”數(shù)據(jù)類型的模式。
在某些實現(xiàn)方式中,內(nèi)容存儲服務(wù)100能夠使用學(xué)習(xí)技術(shù)來辨別視覺內(nèi)容的樣式,該學(xué)習(xí)技術(shù)隨著時間通知內(nèi)容存儲服務(wù)對結(jié)構(gòu)化數(shù)據(jù)模式的選擇。
在一些實現(xiàn)方式中,結(jié)構(gòu)化數(shù)據(jù)能夠通過從源標(biāo)識符(例如,url)標(biāo)識視覺內(nèi)容的源來確定。在許多情況下,視覺內(nèi)容的源標(biāo)識符由網(wǎng)絡(luò)剪切板與視覺內(nèi)容一起傳送到內(nèi)容應(yīng)用。使用源標(biāo)識符,有時能夠從索引服務(wù)獲得結(jié)構(gòu)化數(shù)據(jù)。索引服務(wù)(例如microsoft
此外,一旦源被標(biāo)識,在一些情況下,能夠通過聯(lián)系由源標(biāo)識符指定的服務(wù)器或多個服務(wù)來獲得結(jié)構(gòu)化數(shù)據(jù)。例如,提供視覺內(nèi)容的內(nèi)容創(chuàng)建者的網(wǎng)站可以托管結(jié)構(gòu)化數(shù)據(jù)服務(wù)(例如,oembed),其提供在網(wǎng)站上托管的內(nèi)容的結(jié)構(gòu)化數(shù)據(jù)表示。內(nèi)容存儲服務(wù)100可以經(jīng)由調(diào)用其結(jié)構(gòu)化數(shù)據(jù)服務(wù)來聯(lián)系網(wǎng)站,以請求與由源標(biāo)識符指示的視覺內(nèi)容相關(guān)聯(lián)的結(jié)構(gòu)化數(shù)據(jù)。
在一些情況下,鏈接到視覺內(nèi)容的其它內(nèi)容能夠協(xié)助標(biāo)識視覺內(nèi)容。例如,采用在網(wǎng)站上托管的一系列未標(biāo)識圖像。作為未標(biāo)識圖像的一部分,包含鴕鳥的照片的圖像可以被包括。不存在與包含鴕鳥圖像的視覺內(nèi)容相關(guān)聯(lián)的結(jié)構(gòu)化數(shù)據(jù),但是通過包含用于“鴕鳥”的字典條目的外部網(wǎng)站鏈接到圖像。從外部網(wǎng)站(其本身包含用于鴕鳥的結(jié)構(gòu)化數(shù)據(jù))到鴕鳥的鏈接能夠用于將適當(dāng)?shù)慕Y(jié)構(gòu)化數(shù)據(jù)(例如,視覺內(nèi)容包含“鴕鳥”鳥類型)關(guān)聯(lián)到視覺內(nèi)容。內(nèi)容存儲服務(wù)100可以通過將視覺內(nèi)容的源標(biāo)識符提交給將外部鏈接返回到所標(biāo)識的視覺內(nèi)容的“分析器”或搜索引擎來獲得鏈接信息。分析器的示例是moz.com處的“opensiteexplorer”。
已經(jīng)確定了與視覺內(nèi)容相關(guān)聯(lián)的結(jié)構(gòu)化數(shù)據(jù),表示結(jié)構(gòu)化數(shù)據(jù)的語義符號被分配給先前確定的內(nèi)容容器(203)。該處理功能可以由內(nèi)容存儲服務(wù)100執(zhí)行,如圖1所描述的。
分配給內(nèi)容容器的語義符號標(biāo)識與在視覺內(nèi)容中所描述的類型的內(nèi)容相關(guān)的結(jié)構(gòu)化數(shù)據(jù)。語義符號有時可以使用非視覺標(biāo)識符,例如,標(biāo)簽、元素、屬性、或性質(zhì)。有時,附加的內(nèi)容容器(例如,標(biāo)簽、元素)可以分層地嵌套在現(xiàn)有內(nèi)容容器內(nèi),作為語義符號的附接點。附加的內(nèi)容容器能夠具有進(jìn)一步標(biāo)識例如結(jié)構(gòu)化數(shù)據(jù)類型、唯一標(biāo)識符、或父親標(biāo)識符的屬性,以描述內(nèi)容容器的層級。在一些情況下,可以將描述結(jié)構(gòu)化數(shù)據(jù)或支持內(nèi)容存儲服務(wù)100的功能的附加的屬性增加到現(xiàn)有的內(nèi)容容器中。
可以使用以下非視覺標(biāo)識符來引入語義符號:例如,現(xiàn)有標(biāo)記語言(如html、rdfa、或可擴(kuò)展標(biāo)記語言(xml))的標(biāo)簽、元素、以及屬性。例如,如果視覺內(nèi)容是以html描述的,則語義符號能夠采用附加的<div>和/或<span>標(biāo)簽分層地嵌套在內(nèi)容容器內(nèi)的形式。
有利地,內(nèi)容存儲服務(wù)100以不影響視覺內(nèi)容的顯示或格式化的方式將語義符號分配給視覺內(nèi)容。由于語義符號不重新排序、重新處理、重新布置、或——除了以所描述的方式——改變描述初始視覺內(nèi)容的標(biāo)記語言的信息或格式化方面,所以附加的標(biāo)簽、元素、屬性、或性質(zhì)可以不影響例如較舊的或特征較不豐富的內(nèi)容應(yīng)用。
然后,使用用于存儲適合于內(nèi)容存儲庫的類型的文件、數(shù)據(jù)元素、或數(shù)據(jù)結(jié)構(gòu)的熟悉的技術(shù)將包括具有語義符號的內(nèi)容容器的視覺內(nèi)容保存在內(nèi)容存儲庫中(204)。
圖2b示出了視覺內(nèi)容和視覺內(nèi)容內(nèi)的內(nèi)容容器的表示的示例。一些內(nèi)容容器包括用于標(biāo)識某些種類的結(jié)構(gòu)化數(shù)據(jù)的語義符號的示例。
在圖2b中,針對“蛋糕”食譜示出了視覺內(nèi)容230的簡單示例。兩個列表(“原料”和“步驟”)作為蛋糕食譜的一部分被示出。原料包括“面粉”、“糖”、以及“蛋”,并且步驟是“混合”、“烘焙”、以及“冷卻”。視覺內(nèi)容230的分類是可能從網(wǎng)頁剪切或復(fù)制。
在分組235中示出了由視覺內(nèi)容230表達(dá)的內(nèi)容容器的分層表示。內(nèi)容容器的嵌套結(jié)構(gòu)與其信息方面240-248一起被維護(hù),并且與一些內(nèi)容容器相關(guān)聯(lián)的是一組語義符號250-254。圖中所示的高級語義符號的非限制性示例描述了由視覺內(nèi)容表示的結(jié)構(gòu)化數(shù)據(jù)的某些方面以及針對內(nèi)容容器的標(biāo)識符和在一些情況下可以使用的內(nèi)容容器之間的關(guān)系二者。
例如,內(nèi)容存儲服務(wù)能夠向“蛋糕”食譜容器240增加指示其結(jié)構(gòu)化數(shù)據(jù)類型(“類型:食譜”)和唯一標(biāo)識符(“id:{生成的-蛋糕}”)的語義符號250。唯一標(biāo)識符能夠用于協(xié)助內(nèi)容存儲服務(wù)100來確定哪些項已經(jīng)被改變,以及在一些情況下跟蹤單獨的內(nèi)容容器的層級。
蛋糕240的孩子容器是原料列表241。原料241還可以具有相關(guān)聯(lián)的語義符號251,其如之前地示出結(jié)構(gòu)化數(shù)據(jù)類型“類型:原料”和生成的唯一標(biāo)識符(“id:{生成的-原料}”)。蛋糕食譜及其原料之間的父親-孩子關(guān)系可以由引用與“蛋糕”內(nèi)容容器240相關(guān)聯(lián)的唯一標(biāo)識符的“原料”241內(nèi)容容器上的“parentid(父親id):{id-蛋糕}”語義符號251來指示。
“原料”內(nèi)容容器241中的內(nèi)容被描繪為孩子內(nèi)容容器面粉242、糖243、以及蛋244。圖2b中示出了用于面粉242的語義符號252的示例;用于糖243和蛋244的語義符號在圖2b中未示出,但是可以類似于語義符號252。在語義符號252中,結(jié)構(gòu)化數(shù)據(jù)類型(“類型:原料”)被分配給面粉242以指示在該上下文中“面粉”是一種類型的原料。唯一標(biāo)識符(“id:{生成的-面粉}”)也被分配,作為面粉242是原料的孩子的指示符(“父親id:{id-原料}”)。
蛋糕240的另一孩子內(nèi)容容器是步驟列表245。與步驟245相關(guān)聯(lián)的是語義符號253,其包含與先前在上面討論的元素類似的元素。在語義符號253中,結(jié)構(gòu)化數(shù)據(jù)類型(“類型:步驟”)、以及唯一標(biāo)識符(“id:{生成的-步驟}”)和父親為蛋糕240內(nèi)容容器的指示符(“父親id:{id-蛋糕}”)被分配給步驟245。
步驟內(nèi)容容器245中的內(nèi)容被描繪為孩子混合246、烘焙247、以及冷卻248。示出了與混合246內(nèi)容容器相關(guān)聯(lián)的示例語義符號254。再一次,結(jié)構(gòu)化數(shù)據(jù)類型(“類型:步驟”)以及父親為步驟245的指示符(“父親id:{id-步驟}”)被分配,并且針對混合246內(nèi)容容器生成唯一標(biāo)識符(“id:{生成的-混合}”)。
應(yīng)當(dāng)注意,圖2b中對內(nèi)容容器及其相關(guān)聯(lián)的語義內(nèi)容的描繪僅是示例性的,而并非旨在是限制性的。視覺內(nèi)容和相關(guān)聯(lián)的語義符號的其它表示是可能的。
為了進(jìn)一步示例說明,圖2c示出了用于圖2b中的“蛋糕”食譜的利用微數(shù)據(jù)的html(htmlwithmicrodata)標(biāo)記語言的示例。注意,為了清楚起見,在圖2c中已經(jīng)移除了某些不重要的標(biāo)記語言。在圖2c中利用微數(shù)據(jù)的html使用附接到圍繞標(biāo)記塊的“<div>”元素的“itemtype(項類型)”性質(zhì)來引用來自模式提供者“schema.org”的“食譜”模式(行261)。為了指示食譜的名稱,“蛋糕”食譜標(biāo)簽的初始信息方面由指示“名稱”項性質(zhì)被設(shè)置為“蛋糕”的“<span>”元素圍繞(行262)。
進(jìn)一步沿圖2c中列出的代碼,“原料”列表由行263中的無序列表html元素(“<ul>”)指示。行264-266表示原料列表中的列表項(面粉、糖、以及蛋),并且還指示其結(jié)構(gòu)化數(shù)據(jù)具有語義符號“itemprop=原料”。例如,行264指示整個內(nèi)容容器,包括來自內(nèi)容存儲庫的信息方面(文本“面粉”)、格式化方面(列表項)、以及結(jié)構(gòu)化數(shù)據(jù)方面(指示“面粉”是這個食譜中的原料的“itemprop=原料”)。行267-268關(guān)閉用于示出內(nèi)容容器層級的嵌套的開放標(biāo)簽“<div>”和“<ul>”標(biāo)簽。
有時,可以通過用戶輸入或通過用戶將附加的視覺內(nèi)容剪切到現(xiàn)有內(nèi)容存儲庫中二者將視覺內(nèi)容插入到現(xiàn)有內(nèi)容存儲庫中。當(dāng)存儲新的視覺內(nèi)容的請求發(fā)生時,內(nèi)容存儲服務(wù)100從視覺內(nèi)容中確定一個或多個內(nèi)容容器(201)。然后確定與新的視覺內(nèi)容相關(guān)聯(lián)的結(jié)構(gòu)化數(shù)據(jù)(202)。表示結(jié)構(gòu)化數(shù)據(jù)的語義符號被分配給內(nèi)容容器中的一個或多個(203),以使得語義符號不影響視覺內(nèi)容的視覺方面。然后將新的視覺內(nèi)容(包括任何新的內(nèi)容容器和語義符號)存儲在現(xiàn)有內(nèi)容存儲庫中。以這種方式,新的視覺內(nèi)容的視覺方面和結(jié)構(gòu)化數(shù)據(jù)方面插入到內(nèi)容存儲庫中的內(nèi)容容器的層級中。
使用來自圖2b的“蛋糕”食譜來進(jìn)行示例說明,假設(shè)內(nèi)容應(yīng)用131的用戶希望在原料列表中插入新的原料“肉桂”。用戶通過使用適合于在內(nèi)容應(yīng)用131的視覺編輯界面中插入文本的無論何種方法,通過在“蛋”之后插入文本“肉桂”作為新的列表項來指示存儲內(nèi)容的請求。
文本被視覺地插入到用戶,并且請求被發(fā)送到內(nèi)容存儲服務(wù)100,內(nèi)容存儲服務(wù)100可以實現(xiàn)圖2a的處理流程。圖2d示出了用于圖2b中的“蛋糕”食譜的利用微數(shù)據(jù)的html標(biāo)記語言的示例。為了清楚起見,圖2d中示出了與如圖2c所示的標(biāo)記語言相同的標(biāo)記語言,除了不同的行270。在行270中,示出了針對新的“肉桂”原料的html。內(nèi)容容器的信息方面由文本“肉桂”來指示。格式化方面由“蛋”之后的新的原料的插入點以及由列表項的內(nèi)容容器的元素類型(由圍繞“肉桂”的“<li>”和“</li>”標(biāo)簽表示)二者來指示。內(nèi)容容器的結(jié)構(gòu)化數(shù)據(jù)方面使用“<li>”標(biāo)簽中的“itemprop=原料”性質(zhì)通過“肉桂”是一種類型的原料的語義符號來指示。
某些實現(xiàn)方式有助于通過如關(guān)于圖1所描述的內(nèi)容應(yīng)用131來更新存儲在內(nèi)容存儲庫中的視覺內(nèi)容。圖3a示出了用于對更新內(nèi)容存儲庫中的視覺內(nèi)容的請求進(jìn)行接收和處理的示例處理流程。在圖3a中,接收對內(nèi)容存儲庫中的視覺內(nèi)容進(jìn)行刪除或修改的請求(301)。請求類型(302)確定處理流程要遵循的適當(dāng)路徑:“刪除”或“修改”。應(yīng)當(dāng)注意,圖3a的處理流程是關(guān)于視覺內(nèi)容的單個項的操作的示例說明,但是這些操作可以關(guān)于視覺內(nèi)容的多個項迭代地、依次地、或并行地執(zhí)行。
當(dāng)關(guān)于視覺內(nèi)容請求“刪除”操作時,從內(nèi)容存儲庫中移除與視覺內(nèi)容相關(guān)聯(lián)的一個或多個內(nèi)容容器(310)。暫時返回到圖2b來進(jìn)行示例說明,假設(shè)如通過內(nèi)容應(yīng)用131查看的視覺內(nèi)容示出了如圖2b所示的原料的列表。內(nèi)容應(yīng)用131的用戶希望從蛋糕食譜中的原料列表中刪除“面粉”。用戶繼續(xù)選擇文本“面粉”,并通過內(nèi)容應(yīng)用131的某個接口方面指示“刪除”請求,例如,經(jīng)由“刪除”菜單項或通過按下鍵盤上的“刪除”鍵。文本“面粉”從內(nèi)容應(yīng)用131的視覺編輯界面中移除。再次參考圖2b,內(nèi)容容器242和相關(guān)聯(lián)的語義符號252從內(nèi)容存儲庫中移除。
在利用微數(shù)據(jù)的html是用于描述內(nèi)容容器的信息、格式化、以及結(jié)構(gòu)化數(shù)據(jù)方面的標(biāo)記語言的示例中,當(dāng)視覺內(nèi)容被移除時,方面中的每個方面被移除。換言之,在用戶看到文本“面粉”(信息和格式化方面)從視覺編輯界面中移除時,描述與內(nèi)容容器相關(guān)聯(lián)的結(jié)構(gòu)化數(shù)據(jù)的語義符號也從標(biāo)記語言中移除。語義符號的移除是因為語義符號被增加為內(nèi)容容器的性質(zhì)而實現(xiàn)的。
圖3b示出了用戶對視覺內(nèi)容進(jìn)行的任意編輯以及內(nèi)容存儲庫中的對應(yīng)結(jié)果的示例。參考圖3b,可以使用記事本應(yīng)用或其它內(nèi)容應(yīng)用來編輯具有相關(guān)聯(lián)的語義符號的視覺內(nèi)容330。視覺內(nèi)容330可以是在視覺內(nèi)容230具有如圖2b所示地分配的語義符號之后的視覺內(nèi)容230的視圖。因此,當(dāng)使用記事本應(yīng)用或其它內(nèi)容應(yīng)用的編輯特征從視覺內(nèi)容330中移除項“面粉”時,孩子內(nèi)容容器面粉242在內(nèi)容存儲庫處被移除。有利地,“原料”內(nèi)容容器241中的內(nèi)容和相關(guān)聯(lián)的語義符號維持不受影響。
作為進(jìn)一步的示例說明,針對來自圖2b的“蛋糕”食譜的利用微數(shù)據(jù)的html標(biāo)記語言被示為具有修改。注意,在圖3b中,為了清楚起見,已經(jīng)移除了某些不重要的標(biāo)記語言。在圖3b中利用微數(shù)據(jù)的html使用附接到圍繞標(biāo)記塊的“<div>”元素的“項類型”性質(zhì)來引用來自模式提供者“schema.org”的“食譜”模式(行351)。為了指示食譜的名稱,“蛋糕”食譜標(biāo)簽的初始信息方面由指示“名稱”項性質(zhì)被設(shè)置為“蛋糕”的“<span>”元素圍繞(行352)。
進(jìn)一步沿圖3b中列出的代碼,“原料”列表由行353中的無序列表html元素(“<ul>”)指示。行354-356表示原料列表中的列表項(面粉、糖、以及蛋),并且還指示其結(jié)構(gòu)化數(shù)據(jù)具有語義符號“itemprop=原料”。這里,為了清楚起見,通過刪除線(strikethrough)文本描繪了用于面粉的內(nèi)容容器的刪除,但是實現(xiàn)方式將可操作地從內(nèi)容存儲庫中的標(biāo)記語言中移除行354的整體,包括“<li>”標(biāo)簽及其包圍的文本。移除行354高效地從內(nèi)容存儲庫中移除整個內(nèi)容容器,包括信息方面(文本“面粉”)、格式化方面(列表項)、以及結(jié)構(gòu)化數(shù)據(jù)方面(指示“面粉”是這個食譜中的原料的“itemprop=原料”)。行357-358關(guān)閉用于示出內(nèi)容容器層級的嵌套的打開標(biāo)簽“<div>”和“<ul>”標(biāo)簽。
圖3c示出了用戶對視覺內(nèi)容進(jìn)行的任意編輯以及內(nèi)容存儲庫中的對應(yīng)結(jié)果的另一示例。當(dāng)關(guān)于視覺內(nèi)容請求“修改”操作時,視覺內(nèi)容的視覺方面在內(nèi)容存儲庫中被修改(320)。再一次使用來自圖2b的“蛋糕”食譜進(jìn)行示例說明,假設(shè)在語義符號分配給視覺內(nèi)容230之后,內(nèi)容應(yīng)用131的用戶訪問原料列表中的“糖”并希望將其修改為“紅糖”363。用戶通過使用適合于在內(nèi)容應(yīng)用131的視覺編輯界面中編輯文本的無論何種方法在文本“糖”前面插入文本“紅”來生成“修改”請求。因此,當(dāng)使用記事本應(yīng)用或其它內(nèi)容應(yīng)用的編輯特征在視覺內(nèi)容內(nèi)增加項“紅”363時,孩子內(nèi)容容器糖243內(nèi)的視覺內(nèi)容在內(nèi)容存儲庫處更新。有利地,“糖”孩子內(nèi)容容器243和“原料”內(nèi)容容器241中的內(nèi)容和相關(guān)聯(lián)的語義符號維持不受影響。
作為進(jìn)一步的示例說明,用于來自圖2b的“蛋糕”食譜的利用微數(shù)據(jù)的html標(biāo)記語言被示為具有修改。為了清楚起見,在圖3c中示出了與如圖3b所示的標(biāo)記語言相同的標(biāo)記語言,除了不同的行360-361。針對“面粉”原料(行360)的html不再以刪除線文本示出,因為原料尚未被刪除。在行361中,現(xiàn)在將“紅糖”指示為由圖2b中的內(nèi)容容器242表示的原料項的信息方面。(為了清楚地指示插入,對“紅”的文本加下劃線,但是加下劃線不是html的一部分)。
這里,在維護(hù)與內(nèi)容容器相關(guān)聯(lián)的語義符號的同時對內(nèi)容容器的視覺方面進(jìn)行了修改。有利地,內(nèi)容容器的結(jié)構(gòu)化數(shù)據(jù)方面尚未被修改。實際上,由于表示結(jié)構(gòu)化數(shù)據(jù)方面的語義符號被非侵入性地分配給內(nèi)容容器242,所以在僅內(nèi)容應(yīng)用修改的情況下能夠發(fā)生對視覺方面的修改。注意,在該特定示例中,格式化方面也未被修改,但是格式化(或格式化的至少一些)也可能經(jīng)由該處理流程被修改。
作為這些技術(shù)的結(jié)果,不同類型的內(nèi)容應(yīng)用(包括相同的內(nèi)容應(yīng)用的不同版本(例如,之前的或稍后的版本,或者用于不同種類的設(shè)備或平臺的版本))可以更新相同的內(nèi)容存儲庫而不影響其它類型的內(nèi)容應(yīng)用的功能。此外,由于語義符號尚未受到影響,即使當(dāng)視覺內(nèi)容的視覺方面被修改時,結(jié)構(gòu)化數(shù)據(jù)應(yīng)用也能夠繼續(xù)查看視覺內(nèi)容。例如,如上面所述,如果“糖”由用戶修改為“紅糖”,則結(jié)構(gòu)化數(shù)據(jù)應(yīng)用響應(yīng)于對食譜的原料的查詢而返回經(jīng)修改的視覺內(nèi)容(“紅糖”)。
應(yīng)當(dāng)注意,使用利用微數(shù)據(jù)的html作為這里和其它地方的可操作示例并非旨在是限制性的。能夠針對以圖形結(jié)構(gòu)布置的視覺內(nèi)容來編碼信息、格式化、以及結(jié)構(gòu)化數(shù)據(jù)方面的其它標(biāo)記語言是可能的,例如,rdfa、xml、以及甚至自定義標(biāo)記語言。
由內(nèi)容存儲服務(wù)100存儲和變換的內(nèi)容能夠由查看和使用與語義符號相關(guān)聯(lián)的結(jié)構(gòu)化數(shù)據(jù)的結(jié)構(gòu)化數(shù)據(jù)應(yīng)用進(jìn)行訪問。如圖1指出的,客戶端/服務(wù)140能夠包括請求來自內(nèi)容存儲服務(wù)100的結(jié)構(gòu)化數(shù)據(jù)的結(jié)構(gòu)化數(shù)據(jù)應(yīng)用141。在一些實現(xiàn)方式中,內(nèi)容存儲服務(wù)100顯露了應(yīng)用編程接口(api),其使得結(jié)構(gòu)化數(shù)據(jù)應(yīng)用或服務(wù)141能夠跨單個內(nèi)容存儲庫或跨多個內(nèi)容存儲庫來查詢結(jié)構(gòu)化數(shù)據(jù)的某些類型或值。
api一般是用于使得兩個或更多個應(yīng)用能夠彼此通信的一組編程指令和標(biāo)準(zhǔn)。api是由程序代碼組件或硬件組件(在下文中為“api實現(xiàn)組件”)實現(xiàn)的接口,其允許不同的程序代碼組件或硬件組件(在下文中為“api調(diào)用組件”)訪問和使用一個或多個功能、方法、程序、數(shù)據(jù)結(jié)構(gòu)、類、和/或由api實現(xiàn)組件提供的其它服務(wù)。api能夠定義在api調(diào)用組件與api實現(xiàn)組件之間傳遞的一個或多個參數(shù)。api和相關(guān)組件可以存儲在一種或多種計算機(jī)可讀存儲介質(zhì)中。api常見地根據(jù)rest(代表性狀態(tài)傳輸)或soap(簡單對象訪問協(xié)議)架構(gòu)被實現(xiàn)為一組超文本傳輸協(xié)議(http)請求消息,以及用于響應(yīng)消息的指定格式或結(jié)構(gòu)。
圖4示出了用于實現(xiàn)結(jié)構(gòu)化數(shù)據(jù)api的示例處理流程。內(nèi)容存儲服務(wù)100(api實現(xiàn)組件)能夠接收對于指定類型的結(jié)構(gòu)化數(shù)據(jù)的請求(401),可能經(jīng)由請求查詢。與匹配查詢的指定的結(jié)構(gòu)化數(shù)據(jù)相關(guān)聯(lián)的視覺內(nèi)容和/或結(jié)構(gòu)化數(shù)據(jù)被返回(402)到api調(diào)用組件。
例如,結(jié)構(gòu)化數(shù)據(jù)應(yīng)用141可以使用api來聯(lián)系內(nèi)容存儲服務(wù)100以針對“食譜”來查詢用戶的內(nèi)容存儲庫或多個內(nèi)容存儲庫?;蛘?,結(jié)構(gòu)化數(shù)據(jù)應(yīng)用141可以使用api來請求保存在用戶的內(nèi)容存儲庫中的、包含“櫻桃”的甜點。或者,結(jié)構(gòu)化數(shù)據(jù)應(yīng)用141可以使用api來使得用戶能夠創(chuàng)建合并要購買以用于一組所選擇的食譜的原料的單個購物清單。在一些情況下,查詢可以以自然語言查詢的形式短語化,例如,“所有食譜以香草作為原料”。結(jié)構(gòu)化數(shù)據(jù)應(yīng)用141可以解釋自然語言查詢,并且然后請求匹配查詢的結(jié)構(gòu)化數(shù)據(jù)和/或相關(guān)聯(lián)的視覺內(nèi)容。用于購物整合的第三方免費或商業(yè)服務(wù)(例如,amazon
有利地,由于所描述的語義符號,即使在將視覺內(nèi)容存儲在內(nèi)容存儲庫中之后修改了視覺內(nèi)容,對于指定類型的結(jié)構(gòu)化數(shù)據(jù)的請求仍然能夠取回數(shù)據(jù)。例如,在圖3c的說明性實例中,糖到紅糖的變化不應(yīng)當(dāng)破壞將糖指示為原料的語義符號。因此,當(dāng)結(jié)構(gòu)化數(shù)據(jù)應(yīng)用141請求來自內(nèi)容存儲庫的“原料”時,將返回“紅糖”。
圖5示出了示例說明在所描述的內(nèi)容存儲服務(wù)的一些實現(xiàn)方式中使用的計算設(shè)備或系統(tǒng)的組件的框圖。例如,可操作以運行內(nèi)容存儲服務(wù)100的任何計算設(shè)備或促進(jìn)與環(huán)境中的其它設(shè)備之間的交互的中間設(shè)備每個均可以如關(guān)于系統(tǒng)500所描述地實現(xiàn),系統(tǒng)500本身能夠包括一個或多個計算設(shè)備。系統(tǒng)500能夠包括一個或多個刀片式服務(wù)器設(shè)備、獨立的服務(wù)器設(shè)備、個人計算機(jī)、路由器、集線器、交換機(jī)、橋接器、防火墻設(shè)備、入侵檢測設(shè)備、大型計算機(jī)、網(wǎng)絡(luò)附接的存儲設(shè)備、以及其它類型的計算設(shè)備。硬件能夠根據(jù)任何合適的計算機(jī)架構(gòu)(例如,對稱式多處理(smp)架構(gòu)或非均勻存儲器訪問(numa)架構(gòu))來配置。
系統(tǒng)500能夠包括處理系統(tǒng)501,其可以包括諸如中央處理單元(cpu)或微處理器的處理設(shè)備以及從存儲系統(tǒng)503取回并執(zhí)行軟件502的其它電路。處理系統(tǒng)501可以被實現(xiàn)在單個處理設(shè)備內(nèi),但是也可以跨執(zhí)行程序指令時進(jìn)行協(xié)作的多個處理設(shè)備或子系統(tǒng)來分布。
處理系統(tǒng)501的示例包括通用中央處理單元、專用處理器、和邏輯設(shè)備,以及任何其它類型的處理設(shè)備、組合、或其變型。一個或多個處理設(shè)備可以包括多處理器或多核心處理器,并且可以根據(jù)以下一個或多個合適的指令集進(jìn)行操作:包括但不限于精簡指令集計算(risc)指令集、復(fù)合指令集計算(cisc)指令集、或其組合。在某些實施例中,可以包括一個或多個數(shù)字信號處理器(dsp),作為代替通用cpu或除通用cpu之外的系統(tǒng)的計算機(jī)硬件的一部分。
存儲系統(tǒng)503可以包括處理系統(tǒng)501可讀的、并且能夠存儲包括內(nèi)容存儲服務(wù)100和內(nèi)容存儲服務(wù)api的軟件502的任何計算機(jī)可讀存儲介質(zhì)。存儲系統(tǒng)503可以包括以任何方法或技術(shù)實現(xiàn)以用于存儲信息(例如,計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊、或其它數(shù)據(jù))的易失性和非易失性的、可移除和不可移除的介質(zhì)。
存儲介質(zhì)的示例包括隨機(jī)存取存儲器(ram)、只讀存儲器(rom)、磁盤、光盤、cd、dvd、閃速存儲器、固態(tài)存儲器、相變存儲器、或任何其它合適的存儲介質(zhì)。某些實現(xiàn)方式可以涉及虛擬存儲器和非虛擬存儲器中的任一個或二者。在任何情況下,存儲介質(zhì)都不由傳播信號構(gòu)成。除了存儲介質(zhì)之外,在一些實現(xiàn)方式中,存儲系統(tǒng)503還可以包括通信介質(zhì),軟件502可以通過通信介質(zhì)被內(nèi)部地或外部地通信。
存儲系統(tǒng)503可以被實現(xiàn)為單個存儲設(shè)備,但是也可以跨相對于彼此同地協(xié)作或分布的多個存儲設(shè)備或子系統(tǒng)來實現(xiàn)。存儲系統(tǒng)503可以包括能夠與處理系統(tǒng)501通信的附加的元件,例如,控制器。
軟件502可以以程序指令以及其它函數(shù)來實現(xiàn),當(dāng)一般地由系統(tǒng)500執(zhí)行或特別地由處理系統(tǒng)501執(zhí)行時,可以指示系統(tǒng)500或處理系統(tǒng)501如本文所描述地進(jìn)行操作以用于實現(xiàn)結(jié)構(gòu)化內(nèi)容存儲和取回。軟件502可以提供實現(xiàn)內(nèi)容存儲服務(wù)100的程序指令504。軟件502可以在系統(tǒng)500上實現(xiàn)組件、程序、代理、或?qū)?,該組件、程序、代理、或?qū)右詸C(jī)器可讀處理指令(如指令504)來實現(xiàn)如由內(nèi)容存儲服務(wù)100執(zhí)行的、本文所描述的方法。
軟件502還可以包括附加的過程、程序、或組件,例如,操作系統(tǒng)軟件或其它應(yīng)用軟件。軟件502還可以包括處理系統(tǒng)501可執(zhí)行的、固件或一些其它形式的機(jī)器可讀處理指令。
一般而言,當(dāng)軟件502被加載到處理系統(tǒng)501中并執(zhí)行時,軟件502可以將系統(tǒng)500從通用計算系統(tǒng)整體變換為定制以用于促進(jìn)結(jié)構(gòu)化內(nèi)容存儲和取回的專用計算系統(tǒng)。實際上,在存儲系統(tǒng)503上對軟件502進(jìn)行編碼可以變換存儲系統(tǒng)503的物理結(jié)構(gòu)。物理結(jié)構(gòu)的特定變換可以取決于本說明書的不同實現(xiàn)方式中的各種因素。這些因素的示例可以包括但不限于,用于實現(xiàn)存儲系統(tǒng)503的存儲介質(zhì)的技術(shù),以及計算機(jī)存儲介質(zhì)是被定性為主要存儲還是次要存儲。
系統(tǒng)500可以表示任何這樣的計算系統(tǒng):在該計算系統(tǒng)上軟件502可以是分階段的,并且軟件502可以從該計算系統(tǒng)被分布、傳輸、下載、或以其它方式提供到另一計算系統(tǒng)以用于部署和執(zhí)行,或者其它附加的分布。
在系統(tǒng)500包括多個計算設(shè)備的實施例中,可以使用一個或多個通信網(wǎng)絡(luò)來促進(jìn)計算設(shè)備之間的通信。例如,一個或多個通信網(wǎng)絡(luò)能夠包括促進(jìn)計算設(shè)備之間的通信的局域網(wǎng)、廣域網(wǎng)、或自組織網(wǎng)絡(luò)。在計算設(shè)備之間能夠包括一個或多個直接通信鏈路。另外,在一些情況下,計算設(shè)備能夠安裝在地理分布的位置處。在其它情況下,多個計算設(shè)備能夠安裝在單個地理位置處,例如,服務(wù)器場或服務(wù)器室。
可以包括通信接口505,其提供允許通過通信網(wǎng)絡(luò)或網(wǎng)絡(luò)的集合(未示出)或在空中在系統(tǒng)500與其它計算系統(tǒng)(未示出)之間進(jìn)行通信的通信連接和設(shè)備。一起允許系統(tǒng)間通信的連接和設(shè)備的示例可以包括網(wǎng)絡(luò)接口卡、天線、功率放大器、rf電路、收發(fā)機(jī)、以及其它通信電路。連接和設(shè)備可以通過通信介質(zhì)進(jìn)行通信,以與其它計算系統(tǒng)或系統(tǒng)的網(wǎng)絡(luò)交換通信,例如,金屬、玻璃、空氣、或任何其它合適的通信介質(zhì)。前述通信介質(zhì)、網(wǎng)絡(luò)、連接、以及設(shè)備是公知的,并且不需要在這里進(jìn)行詳盡地討論。
應(yīng)當(dāng)注意,系統(tǒng)500的許多元件可以包括在片上系統(tǒng)(soc)設(shè)備中。這些元件可以包括但不限于處理系統(tǒng)501、通信接口505,以及甚至存儲系統(tǒng)503和軟件502的元件。
圖6示出了其中可以執(zhí)行用于結(jié)構(gòu)化內(nèi)容存儲和取回的技術(shù)的實現(xiàn)方式的示例系統(tǒng)架構(gòu)。在圖6所示的示例中,用于與視覺內(nèi)容或結(jié)構(gòu)化數(shù)據(jù)進(jìn)行交互的內(nèi)容或結(jié)構(gòu)化數(shù)據(jù)應(yīng)用/服務(wù)601能夠在設(shè)備600上實現(xiàn),設(shè)備600可以是計算系統(tǒng)或包括計算系統(tǒng),例如,膝上型計算機(jī)、臺式計算機(jī)、平板計算機(jī)、閱讀器、移動電話等。在內(nèi)容或結(jié)構(gòu)化數(shù)據(jù)應(yīng)用作為服務(wù)(可能作為許多用戶可訪問的云服務(wù))來操作的那些實現(xiàn)方式中,設(shè)備600能夠包括一個或多個刀片式服務(wù)器設(shè)備、獨立的服務(wù)器設(shè)備、個人計算機(jī)、路由器、集線器、交換機(jī)、橋接器、防火墻設(shè)備、入侵檢測設(shè)備、大型計算機(jī)、網(wǎng)絡(luò)附接的存儲設(shè)備、以及其它類型的計算設(shè)備。
內(nèi)容存儲服務(wù)611可以被實現(xiàn)為服務(wù)器610上的軟件或硬件(或其組合),服務(wù)器610可以是系統(tǒng)500的實例化。內(nèi)容存儲服務(wù)611的特征和功能可以是設(shè)備600或者內(nèi)容或結(jié)構(gòu)化數(shù)據(jù)應(yīng)用601經(jīng)由api可調(diào)用的。
內(nèi)容存儲服務(wù)611可以與其它服務(wù)621進(jìn)行通信,其可以提供這樣的能力:例如,模式服務(wù)(即,另一服務(wù)是模式提供者)、搜索服務(wù)、字典搜索、或可以用于確定與視覺內(nèi)容相關(guān)聯(lián)的結(jié)構(gòu)化數(shù)據(jù)或語義符號的其它服務(wù)。其它服務(wù)621可以在服務(wù)器620上實現(xiàn),服務(wù)器620本身可以是類似于關(guān)于系統(tǒng)500或其方面描述的系統(tǒng)的實例化。在給定的環(huán)境中許多其它服務(wù)可以是可用的。
在環(huán)境中的組件之間進(jìn)行的數(shù)據(jù)的通信和互換可以通過網(wǎng)絡(luò)650發(fā)生。網(wǎng)絡(luò)650能夠包括但不限于蜂窩網(wǎng)絡(luò)(例如,無線電話)、點到點撥號連接、衛(wèi)星網(wǎng)絡(luò)、互聯(lián)網(wǎng)、局域網(wǎng)(lan)、廣域網(wǎng)(wan)、wi-fi網(wǎng)絡(luò)、自組織網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)、外聯(lián)網(wǎng)、或其組合。網(wǎng)絡(luò)可以包括一個或多個連接的網(wǎng)絡(luò)(例如,多網(wǎng)絡(luò)的環(huán)境),包括諸如互聯(lián)網(wǎng)的公共網(wǎng)絡(luò),和/或諸如安全企業(yè)私有網(wǎng)絡(luò)的私有網(wǎng)絡(luò)。
可替代地或另外地,本文描述的功能、方法、以及過程能夠至少部分地由一個或多個硬件模塊(或邏輯組件)來實現(xiàn)。例如,硬件模塊能夠包括但不限于專用集成電路(asic)芯片、現(xiàn)場可編程門陣列(fpga)、片上系統(tǒng)(soc)系統(tǒng)、復(fù)雜可編程邏輯器件(cpld)、以及現(xiàn)在已知或以后開發(fā)的其它可編程邏輯器件。當(dāng)硬件模塊被激活時,硬件模塊執(zhí)行硬件模塊內(nèi)包括的功能、方法、以及過程。
本發(fā)明的某些方面提供以下非限制性實施例:
示例1。一種系統(tǒng),包括:一種或多種計算機(jī)可讀存儲介質(zhì);處理系統(tǒng);存儲在一種或多種計算機(jī)可讀存儲介質(zhì)上的用于內(nèi)容存儲服務(wù)的程序指令,其指示處理系統(tǒng)響應(yīng)于接收存儲視覺內(nèi)容的指示而:確定用于視覺內(nèi)容的一個或多個內(nèi)容容器;確定與視覺內(nèi)容相關(guān)聯(lián)的結(jié)構(gòu)化數(shù)據(jù);將表示結(jié)構(gòu)化數(shù)據(jù)的語義符號分配給一個或多個內(nèi)容容器中的至少一個內(nèi)容容器;以及將視覺內(nèi)容和具有語義符號的至少一個內(nèi)容容器存儲在內(nèi)容存儲庫中,內(nèi)容存儲庫存儲在一種或多種計算機(jī)可讀存儲介質(zhì)上。
示例2。示例1的系統(tǒng),還包括存儲在計算機(jī)可讀存儲介質(zhì)上的用于應(yīng)用編程接口的程序指令,其指示處理系統(tǒng)響應(yīng)于接收對于指定類型的結(jié)構(gòu)化數(shù)據(jù)的請求,而返回內(nèi)容存儲庫中的與指定類型的結(jié)構(gòu)化數(shù)據(jù)相關(guān)聯(lián)的視覺內(nèi)容。
示例3。示例1或2的系統(tǒng),還包括存儲在一種或多種計算機(jī)可讀存儲介質(zhì)上的程序指令,其指示處理系統(tǒng)響應(yīng)于接收刪除或修改內(nèi)容存儲庫中的視覺內(nèi)容的請求而:當(dāng)請求是刪除視覺內(nèi)容時,從內(nèi)容存儲庫中移除與視覺內(nèi)容相關(guān)聯(lián)的一個或多個內(nèi)容容器;以及當(dāng)請求是修改視覺內(nèi)容時,修改內(nèi)容存儲庫中的視覺內(nèi)容的視覺方面。
示例4。示例1-3中任一項的系統(tǒng),還包括存儲在一種或多種計算機(jī)可讀存儲介質(zhì)上的程序指令,其指示處理系統(tǒng):從第一內(nèi)容應(yīng)用接收對內(nèi)容存儲庫中的特定視覺內(nèi)容的修改,內(nèi)容存儲庫包括具有相關(guān)聯(lián)的語義符號的至少一個內(nèi)容容器,其中,對特定視覺內(nèi)容的修改是在至少一個內(nèi)容容器中的一個內(nèi)容容器內(nèi)的,其中,第一內(nèi)容應(yīng)用不識別語義符號,語義符號保留在至少一個內(nèi)容容器中的一個內(nèi)容容器上,而不管對特定視覺內(nèi)容的修改。
示例5。示例1-4中任一項的系統(tǒng),還包括存儲在一種或多種計算機(jī)可讀存儲介質(zhì)上的程序指令,其指示處理系統(tǒng):響應(yīng)于從第二內(nèi)容應(yīng)用接收對于特定視覺內(nèi)容的請求,向第二內(nèi)容應(yīng)用提供具有修改的特定視覺內(nèi)容和與其相關(guān)聯(lián)的語義符號。
示例6。示例5的系統(tǒng),其中,第一內(nèi)容應(yīng)用是與第二內(nèi)容應(yīng)用不同的版本。
示例7。示例1-6中任一項的系統(tǒng),其中,用于確定用于視覺內(nèi)容的一個或多個內(nèi)容容器的程序指令包括指示處理系統(tǒng)標(biāo)識視覺內(nèi)容中的現(xiàn)有內(nèi)容容器的指令。
示例8。示例1-7中任一項的系統(tǒng),其中,用于確定用于視覺內(nèi)容的一個或多個內(nèi)容容器的程序指令包括指示處理系統(tǒng)創(chuàng)建新的內(nèi)容容器的指令。
示例9。示例1-8中任一項的系統(tǒng),其中,用于確定與視覺內(nèi)容相關(guān)聯(lián)的結(jié)構(gòu)化數(shù)據(jù)的程序指令包括指示處理系統(tǒng)分析視覺內(nèi)容中的模式的指令。
示例10。示例1-9中任一項的系統(tǒng),其中,用于確定與視覺內(nèi)容相關(guān)聯(lián)的結(jié)構(gòu)化數(shù)據(jù)的程序指令包括指示處理系統(tǒng)進(jìn)行以下操作的指令:通過對視覺內(nèi)容與存儲在一種或多種計算機(jī)可讀存儲介質(zhì)上的已知內(nèi)容的至少一個內(nèi)容模板進(jìn)行比較來標(biāo)識用于視覺內(nèi)容的一個或多個可能模式;并且請求來自模式提供者的一個或多個可能模式。
示例11。示例1-10中任一項的系統(tǒng),其中,用于確定與視覺內(nèi)容相關(guān)聯(lián)的結(jié)構(gòu)化數(shù)據(jù)的程序指令包括指示處理系統(tǒng)進(jìn)行以下操作的指令:根據(jù)源標(biāo)識符來標(biāo)識視覺內(nèi)容的源;并且從視覺內(nèi)容的源中取回結(jié)構(gòu)化數(shù)據(jù)。
示例12。示例1-11中任一項的系統(tǒng),其中,用于確定與視覺內(nèi)容相關(guān)聯(lián)的結(jié)構(gòu)化數(shù)據(jù)的程序指令包括指示處理系統(tǒng)進(jìn)行以下操作的指令:標(biāo)識與視覺內(nèi)容相關(guān)聯(lián)的源標(biāo)識符;并且從具有由與視覺內(nèi)容相關(guān)聯(lián)的源標(biāo)識符索引的多個結(jié)構(gòu)化數(shù)據(jù)的索引服務(wù)中取回結(jié)構(gòu)化數(shù)據(jù)。
示例13。示例1-12中任一項的系統(tǒng),其中,用于將表示結(jié)構(gòu)化數(shù)據(jù)的語義符號分配給一個或多個內(nèi)容容器中的至少一個內(nèi)容容器的程序指令包括指示處理系統(tǒng)進(jìn)行以下操作的指令:將指示結(jié)構(gòu)化數(shù)據(jù)類型的非視覺標(biāo)識符附到一個或多個內(nèi)容容器中的至少一個內(nèi)容容器的視覺方面。
示例14。示例1-13中任一項的系統(tǒng),其中,語義符號是以html描述的。
示例15。示例1-14中任一項的系統(tǒng),其中,視覺內(nèi)容是通過具有一些現(xiàn)有結(jié)構(gòu)來非結(jié)構(gòu)化或半結(jié)構(gòu)化的,然后利用由所描述的語義符號供應(yīng)的結(jié)構(gòu)對其進(jìn)行補充。
示例16。一種促進(jìn)內(nèi)容存儲庫中的結(jié)構(gòu)化數(shù)據(jù)的方法,該方法包括:接收存儲非結(jié)構(gòu)化或半結(jié)構(gòu)化的視覺內(nèi)容的指示;從視覺內(nèi)容中確定一個或多個內(nèi)容容器;確定與視覺內(nèi)容相關(guān)聯(lián)的結(jié)構(gòu)化數(shù)據(jù);將表示結(jié)構(gòu)化數(shù)據(jù)的語義符號分配給一個或多個內(nèi)容容器中的至少一個內(nèi)容容器;將視覺內(nèi)容和具有語義符號的至少一個內(nèi)容容器存儲在內(nèi)容存儲庫中;以及從第一內(nèi)容應(yīng)用接收對具有相關(guān)聯(lián)的語義符號的特定視覺內(nèi)容的修改,修改包括對任意位置的編輯,語義符號保留在至少一個內(nèi)容容器中的一個內(nèi)容容器上,而不管對特定視覺內(nèi)容的修改。
示例17。示例16的方法,其中,確定用于視覺內(nèi)容的一個或多個內(nèi)容容器包括以下中的一個或多個:創(chuàng)建新內(nèi)容容器,以及標(biāo)識視覺內(nèi)容中的現(xiàn)有內(nèi)容容器。
示例18。示例16或17的方法,其中,確定結(jié)構(gòu)化數(shù)據(jù)包括分析視覺內(nèi)容中的模式。
示例19。示例16-18中任一項的方法,其中,確定結(jié)構(gòu)化數(shù)據(jù)包括:通過對視覺內(nèi)容與已知內(nèi)容的至少一個內(nèi)容模板進(jìn)行比較來標(biāo)識用于視覺內(nèi)容的一個或多個可能模式;并且請求來自模式提供者的可能模式。
示例20。示例16-19中任一項的方法,其中,將表示結(jié)構(gòu)化數(shù)據(jù)的語義符號分配給一個或多個內(nèi)容容器中的至少一個內(nèi)容容器包括:將指示結(jié)構(gòu)化數(shù)據(jù)類型的非視覺標(biāo)識符附到一個或多個內(nèi)容容器中的至少一個內(nèi)容容器的視覺方面。
示例21。示例16-20中任一項的方法,還包括:接收對于指定類型的結(jié)構(gòu)化數(shù)據(jù)的請求;并且返回內(nèi)容存儲庫中的與指定類型的結(jié)構(gòu)化數(shù)據(jù)相關(guān)聯(lián)的視覺內(nèi)容。
示例22。示例16-21中任一項的方法,其中,第一內(nèi)容應(yīng)用不識別結(jié)構(gòu)化內(nèi)容。
示例23。示例16-21中任一項的方法,其中,第一內(nèi)容應(yīng)用是記事本應(yīng)用。
示例24。示例16-23中任一項的方法在服務(wù)器上執(zhí)行。
示例25。一種方法,包括:接收對于內(nèi)容存儲庫中的第一指定類型的結(jié)構(gòu)化數(shù)據(jù)的第一請求,內(nèi)容存儲器包括具有相關(guān)聯(lián)的語義符號的至少一個內(nèi)容容器;響應(yīng)于接收第一請求,提供來自內(nèi)容存儲庫的與第一指定類型的結(jié)構(gòu)化數(shù)據(jù)相關(guān)聯(lián)的至少一個視覺內(nèi)容;從內(nèi)容應(yīng)用接收與第一指定類型的結(jié)構(gòu)化數(shù)據(jù)相關(guān)聯(lián)的至少一個視覺內(nèi)容中的一個視覺內(nèi)容的修改,其中,修改是在至少一個內(nèi)容容器中的一個內(nèi)容容器內(nèi)的,語義符號保留在至少一個內(nèi)容容器中的一個內(nèi)容容器上,而不管修改;在對至少一個視覺內(nèi)容中的一個視覺內(nèi)容進(jìn)行修改之后,接收對于內(nèi)容存儲庫中的第一指定類型的結(jié)構(gòu)化數(shù)據(jù)的第二請求;以及響應(yīng)于接收第二請求,提供來自內(nèi)容存儲庫的與第一指定類型的結(jié)構(gòu)化數(shù)據(jù)相關(guān)聯(lián)的至少一個視覺內(nèi)容,其中,響應(yīng)于第二請求而提供的至少一個視覺內(nèi)容包括具有修改的視覺內(nèi)容。
示例26。示例25的方法,其中,內(nèi)容應(yīng)用是記事本應(yīng)用。
示例27。示例25或26的方法,還包括:響應(yīng)于從第二內(nèi)容應(yīng)用接收對于特定視覺內(nèi)容的請求,向第二內(nèi)容應(yīng)用提供具有修改的特定視覺內(nèi)容和與其相關(guān)聯(lián)的語義符號。
示例28。示例25-27中任一項的方法,還包括:接收存儲所標(biāo)識的視覺內(nèi)容的指示;確定用于所標(biāo)識的視覺內(nèi)容的一個或多個內(nèi)容容器;確定與所標(biāo)識的視覺內(nèi)容相關(guān)聯(lián)的結(jié)構(gòu)化數(shù)據(jù);將表示結(jié)構(gòu)化數(shù)據(jù)的語義符號分配給用于所標(biāo)識的視覺內(nèi)容的一個或多個內(nèi)容容器中的至少一個內(nèi)容容器;以及將所標(biāo)識的視覺內(nèi)容和具有所分配的語義符號的、用于所標(biāo)識的視覺內(nèi)容的至少一個內(nèi)容容器存儲在內(nèi)容存儲庫中。
示例29。示例28的方法,其中,用于所標(biāo)識的視覺內(nèi)容的所分配的語義符號包括第一指定類型的結(jié)構(gòu)化數(shù)據(jù),所標(biāo)識的視覺內(nèi)容被包括在響應(yīng)于第一請求和/或第二個請求而提供的至少一個視覺內(nèi)容中。
示例30。示例28或29的方法,其中,所標(biāo)識的視覺內(nèi)容是非結(jié)構(gòu)化的。
示例31。示例28或29的方法,其中,所標(biāo)識的視覺內(nèi)容是通過具有一些現(xiàn)有結(jié)構(gòu)而半結(jié)構(gòu)化的,然后利用由所描述的語義符號供應(yīng)的結(jié)構(gòu)對其進(jìn)行補充。
示例32。示例25-31中任一項的方法,其中,確定用于所標(biāo)識的視覺內(nèi)容的一個或多個內(nèi)容容器包括以下中的一個或多個:創(chuàng)建新的內(nèi)容容器,以及標(biāo)識所標(biāo)識的視覺內(nèi)容中的現(xiàn)有內(nèi)容容器。
示例33。示例25-32中任一項的方法,其中,確定結(jié)構(gòu)化數(shù)據(jù)包括分析所標(biāo)識的視覺內(nèi)容中的模式。
示例34。示例25-33中任一項的方法,其中,確定結(jié)構(gòu)化數(shù)據(jù)包括:通過對所標(biāo)識的視覺內(nèi)容與已知內(nèi)容的至少一個內(nèi)容模板進(jìn)行比較來標(biāo)識用于所標(biāo)識的視覺內(nèi)容的一個或多個可能模式;以及請求來自模式提供者的可能模式。
示例35。示例25-34中任一項的方法,其中,將表示結(jié)構(gòu)化數(shù)據(jù)的語義符號分配給一個或多個內(nèi)容容器中的至少一個內(nèi)容容器包括:將指示結(jié)構(gòu)化數(shù)據(jù)類型的非視覺標(biāo)識符附到一個或多個內(nèi)容容器中的至少一個內(nèi)容容器的視覺方面。
示例36。一種系統(tǒng),包括:用于接收存儲視覺內(nèi)容的指示的模塊;用于從視覺內(nèi)容中確定一個或多個內(nèi)容容器的模塊;用于確定與視覺內(nèi)容相關(guān)聯(lián)的結(jié)構(gòu)化數(shù)據(jù)的模塊;用于將表示結(jié)構(gòu)化數(shù)據(jù)的語義符號分配給一個或多個內(nèi)容容器中的至少一個內(nèi)容容器的模塊;以及用于將視覺內(nèi)容和具有語義符號的至少一個內(nèi)容容器存儲在內(nèi)容存儲庫中的模塊。
示例37。示例36的系統(tǒng),還包括:用于從第一內(nèi)容應(yīng)用接收對具有相關(guān)聯(lián)的語義符號的特定視覺內(nèi)容的修改的模塊,修改包括對任意位置的編輯,語義符號保留在至少一個內(nèi)容容器中的一個內(nèi)容容器上,而不管對特定視覺內(nèi)容的修改。
示例38。一種包括用于執(zhí)行示例16-35中任一項的方法的模塊的系統(tǒng)。
示例39。一種系統(tǒng),包括:用于接收對于內(nèi)容存儲庫中的第一指定類型的結(jié)構(gòu)化數(shù)據(jù)的第一請求的模塊,內(nèi)容存儲庫包括具有相關(guān)聯(lián)的語義符號的至少一個內(nèi)容容器;用于響應(yīng)于接收第一請求而提供來自內(nèi)容存儲庫的與第一指定類型的結(jié)構(gòu)化數(shù)據(jù)相關(guān)聯(lián)的至少一個視覺內(nèi)容的模塊;用于從內(nèi)容應(yīng)用接收對與第一指定類型的結(jié)構(gòu)化數(shù)據(jù)相關(guān)聯(lián)的至少一個視覺內(nèi)容中的一個視覺內(nèi)容的修改的模塊,其中,修改是在至少一個內(nèi)容容器中的一個內(nèi)容容器內(nèi)的,語義符號保留在至少一個內(nèi)容容器中的一個內(nèi)容容器上,而不管修改;用于在對至少一個視覺內(nèi)容中的一個視覺內(nèi)容進(jìn)行修改之后接收對于內(nèi)容存儲庫中的第一指定類型的結(jié)構(gòu)化數(shù)據(jù)的第二請求的模塊;以及用于響應(yīng)于接收第二請求而提供來自內(nèi)容存儲庫的與第一指定類型的結(jié)構(gòu)化數(shù)據(jù)相關(guān)聯(lián)的至少一個視覺內(nèi)容的模塊,其中,響應(yīng)于第二請求而提供的至少一個視覺內(nèi)容包括具有修改的視覺內(nèi)容。
應(yīng)當(dāng)理解,本文描述的示例和實施例僅用于示例說明的目的,并且對于本領(lǐng)域技術(shù)人員而言建議據(jù)此來進(jìn)行各種修改或改變,并且各種修改或改變將包括在本申請的精神和權(quán)限內(nèi)。
盡管已經(jīng)以特定于結(jié)構(gòu)特征和/或行為的語言對主題進(jìn)行了描述,但是可以理解,所附權(quán)利要求中限定的主題不一定限于上面描述的特定特征或行為。相反,上面描述的特定特征和行為作為實現(xiàn)權(quán)利要求的示例而公開,并且其它等同的特征和行為旨在在權(quán)利要求的范圍內(nèi)。