文因互聯鮑捷:深度解析知識圖譜發展關鍵及技術脈絡

文因互聯鮑捷:深度解析知識圖譜發展關鍵及技術脈絡 |百萬人學AI

叮咚~你被福利砸中了!現在起,「2020 AI開發者萬人大會」299門票免費送!進入報名頁面【 】,點擊“立即報名”,結算時使用優惠碼“AIP1410”,價格就會變為“0"元!


知識圖譜是人工智能三大分支之一——符號主義——在新時期主要的落地技術方式。該技術雖然在 2012 年才得名,但它的歷史淵源,卻可以追溯到更早的語義網、描述邏輯、和專家系統。在該技術的的歷史演變中,多次出現發展瓶頸,也多次以工程的方式突破了這些瓶頸。


AI科技大本營此次邀請到文因互聯 CEO 鮑捷,作為知識圖譜領域形成過程的親歷者之一,他對知識圖譜的歷史淵源進行了梳理,深度解析了該領域幾次發展的主要技術突破,並分析了其工業落地的幾個關鍵點。

文因互聯鮑捷:深度解析知識圖譜發展關鍵及技術脈絡 |百萬人學AI

鮑捷,文因互聯 CEO,聯合創始人。他曾是三星美國研發中心研究員,倫斯勒理工學院(RPI)博士後。他是中國中文信息學會語言與知識計算專委會委員,W3C 顧問委員會委員,中國計算機協會會刊編委,中文開放知識圖譜聯盟(OpenKG)發起人之一。他的研究領域涉及人工智能諸多方向,如自然語言處理、語義網、機器學習、描述邏輯、信息論、神經網絡、圖像識別等,已發表 70 多篇論文。

▌什麼是知識圖譜?

知識圖譜到底是什麼?坦白說我也沒有特別好的答案,知識圖譜從某種程度來說是一個營銷名詞,是 2012 年穀歌提出了這樣一個項目叫“Knowledge Graph”。


一個有意思的定義是王昊奮老師提出來的:知識圖譜旨在描述真實世界中存在的各種實體或概念。其中,每個實體或概念用一個全局唯一確定的ID來標識,稱為它們的標識符。每個屬性-值對用來刻畫實體的內在特性,而關係用來連接兩個實體,刻畫它們之間的關聯。


但是在實踐中我們並不需要太過糾結什麼叫知識圖譜,什麼不是知識圖譜。有人問我說是否必須要用RDF(資源描述框架)才是知識圖譜?或者說是不是必須用Neo4j圖數據庫才是知識圖譜?其實不是。不在於你具體用了哪一種Syntax,哪一種數據存儲的數據庫。關鍵是它的本質是什麼。

理解本質從瞭解知識圖譜的演化過程入手。

▌知識圖譜的演化

知識圖譜這個概念是最近四、五年才為大家所知的,但是這個技術本身有非常深厚的發展基礎,我把這個過程分成六個階段,合併一下之後大概分成兩個比較重要的階段。


文因互聯鮑捷:深度解析知識圖譜發展關鍵及技術脈絡 |百萬人學AI


往前溯可以追溯到五六十年代前,因為在人工智能這個領域裡,知識工程作為一個分支很早就有了。人工智能在大體上有三個比較大的分支,一個是神經網絡,叫連接主義學派,另外一個叫統計或者經驗主義學派,後來就衍生出了機器學習,最後一個知識工程這個方向,我們叫它理性主義或者符號主義,是從 1956 年這個學科形成時就有的分支。


在六十年代、七十年代的時候,知識工程這個領域往前發展,不斷的產生出新的邏輯語言和新的實用方法,像描述邏輯是七十年代就興起了的。在六十年代時就有一個叫“Frame Network”(aka “Semantic Network”),語義網絡。注意,不是“語義網”而是“語義網絡”,那個時候的語義網絡跟現在的知識圖譜非常像。所以這個是不斷循環的,如果我們把六十年的學科發展抽象來看,實際上就是一個從簡單到複雜、再從複雜迴歸簡單的過程。


從最終得到的結果來看,好像我們現在得到的知識圖譜跟六十年代就已經有的語義網絡非常像,但這種像只是表面上的。因為在發展過程中,我們構造了一個龐大的工業體系,以及如何從各種各樣的文檔、各種各樣的數據裡集中編輯、生成知識圖譜的一整套工業鏈。所以一個技術不能只看它的定義,而是要看它相關所有實踐過程中工業體系的總和。今天知識圖譜的技術無論從深度還是廣度上,都遠遠超越六十年代的語義網絡技術。


八十年代、九十年代、到兩千年,這中間還有非常多中間技術,我們從中選些重要的事情說一下。


▌語義網絡


文因互聯鮑捷:深度解析知識圖譜發展關鍵及技術脈絡 |百萬人學AI

這張圖是對前面那張圖的抽象,我們選其中發展過程中最重要的節點。六十年代有一種東西叫“語義網絡”,語義網絡在七十年代、八十年代時演化成了描述邏輯。為什麼會有這種變化?因為語義網絡本身只是一種表徵,並不具備推理能力。語義網絡+推理變成了新的邏輯系統,叫“描述邏輯”,描述邏輯到兩千年前後跟 Web 技術結合在一起,形成了新的語言,比如 OIL 、DAML。


另外一個分支是 1995 年前後有了元數據,從元數據學科衍生出一個分支叫 RDF,後來 RDF 和 DAML 合併起來就變成了 OWL。下面還有一些更工程的內容,包括 schema.org、RDFa、JOSN-LD、GraphpDB,這都是最近 5、6 年興起的新技術。這些技術的總和就構成了我們所稱的“知識圖譜”技術,但只是其中一部分。


文因互聯鮑捷:深度解析知識圖譜發展關鍵及技術脈絡 |百萬人學AI


給大家看一個語義網絡,語義網絡其實就是一個網絡。這張圖上有各種不同的概念,比如中間的 Mammal 是哺乳動物,貓(cat) 是一種哺乳動物,貓有毛;熊是哺乳動物,熊也有毛;鯨是一種哺乳動物,鯨在水裡面生活;魚也在水裡面生活,也是一種動物;哺乳動物是一種脊椎動物,也是動物的一種。


所有這些節點和邊的總和就構成了一個網絡,每一條邊上都有一些標誌的,用術語來說就是“有類型的邊”,這種“有類型的邊”連在一起的節點叫“語義網絡”,概念是非常簡單的。


六十年代時自然語言處理和知識表現的大拿批評這種語義網絡,說這個東西沒辦法用於推理,用術語來說是最後沒有“semantics”。這裡涉及很多關係,什麼叫 semantics?有的學者認為 semantics 必須是有一套嚴格的語義定義,這通常是用模型論來定義,或者過程方法來定義。其實也有更淺的對語義的理解,萬事萬物之間的關係就是語義。比如我們打開字典,字典是用一些詞定義另外一些詞,這就是語義。


我們在這樣的語義網絡裡,如何定義一個詞的意義?其實我們是做不到的。比如在這個語義網絡裡,居於中間位置的詞是“哺乳動物”,它到底是什麼?我們很難讓計算機理解什麼是真正的哺乳動物,很難通過它的內涵含義來理解。對於計算機而言,它只能知道萬事萬物之間的聯繫,也許這對於機器自動處理來說就夠了。所以語義網絡儘管沒有所謂的語義,我們還是把它稱為語義網絡的原因,因為語義就是關係。


▌描述邏輯


文因互聯鮑捷:深度解析知識圖譜發展關鍵及技術脈絡 |百萬人學AI


到了八十年代時,描述邏輯就已經比較成熟了。描述邏輯是邏輯的一種,我在這裡面列了一張表,這是描述邏輯和一階邏輯 (FOL 邏輯)之間的對應。如果大家沒有邏輯基礎也不用害怕,因為這個圖本質上是講很基礎的邏輯定義。


我們有了一個描述邏輯之後,就可以用計算機來做一些自動推理的工作。八十年代到九十年代,描述邏輯學者們一直都在尋找如何讓計算機更好的進行邏輯推理,一些比較可判定的所謂計算機不會死機的那些問題的總和,這種語言稱為“描述邏輯”。


▌OWL


文因互聯鮑捷:深度解析知識圖譜發展關鍵及技術脈絡 |百萬人學AI


到九十年代時描述邏輯成為知識表現領域的一種非常顯學、非常重要的分支,正好這時互聯網興起了。到了 1995 年前後開始了真正知識圖譜化的第一步,開始把描述邏輯用互聯網的語言來重新來表徵,有人用 HTML,也有人用 XML。1999 年馬里蘭大學開始發佈了第一個這樣的語言,叫“SHOE”。後來這個語言被美國的國防部高等研究所資助了一個項目叫“DAML”,這就是第一個在美國這邊把知識表現語言放在網上一種官方的努力。


與此同時,在歐洲也有一個非常相似的努力叫“OIL”,大西洋兩岸的同行們一看,大家做的事情非常相似,於是在 2001 年時 W3C 開始把兩邊的努力彙總在一起,出現了一個語言叫“DAML+OIL”。到了 2004 年時 W3C 進一步協調大家的努力,合併了一個新的語言叫“OWL”,2009年發佈了第二版,叫“OWL2”。


從九十年代到 2009 年這十幾年期間,這個領域不斷向上、向好積極發展,在那個時候我們曾經認為 OWL 是描述這個世界非常好的一種工具,因為它對於機器處理是非常友好的,所以我們就希望把它放到互聯網上去,讓更多人用到,但是這個設想後來並沒有實現。


▌W3C OWL 工作組的瓶頸


這裡多說幾句 OWL,因為我是 OWL 工作組的一員,所以知道一些早期的事情。OWL有兩個工作組,最早的一個工作組是在 2000-2004 年之間,我趕上的是 2007-2010 年的第二個工作組,這個工作組的使命是把現有的 OWL 語言進一步完善,提供所謂更強的表達力,或者在機器處理上比如要進行語義數據的查詢,我們應該用什麼樣的,什麼可以用、什麼不能用、什麼能說、什麼不能說、什麼對機器是友好的,OWL 工作組就是做這個事情。


我們寫了 10 來個文檔,加在一起 600 多頁紙,花了兩年時間做這個事情。OWL 工作組除了大學裡來的人,還有一些企業的成員,包括 IBM、Oracle、惠普等等,還有一些小的創業公司。


那個時候我們這個領域遇到了一些瓶頸的,就是 OWL 這個語言或者語義網整個領域,在 2000 年前後是大家非常寄予厚望的,就好像現在大家對於深度學習寄予厚望一樣。但是往前走到 2006 年前後遇到了瓶頸,就是沒有人真的去產生這樣的數據,大多數日常場景用不到語義。於是這時候就產生了內部的路線鬥爭,叫“SEMANTIC Web or semantic WEB”,就是到底我們是加強語義呢?還是加強互聯網屬性呢?有兩組不同的人不斷進行爭執。


當然,還有很多其他的分歧,包括我們到底該怎麼去定義什麼叫“簡單”,大家沒有一致的意見。所以我們最終生成的文檔從學術角度來說是非常有價值,但是對於工業應用特別是 C 端的互聯網應用沒有達到預期。


小結 :從弱語義到強語義的嘗試(邏輯)


文因互聯鮑捷:深度解析知識圖譜發展關鍵及技術脈絡 |百萬人學AI


前面這一段大體總結了知識圖譜技術發展的前兩個大的階段歷史,一個是從六十年代到九十年代,早期知識圖譜的原型,包括語義網絡等等,後面一系列的技術。


從 2001-2006 年或者 2007 年這段時間,是不斷加強語義網所謂的語義的過程,就是從弱語義到強語義,從語義網絡到描述邏輯,一直髮展到 OWL,並行還有另外其他一些,比如基於框架邏輯還有另外一個語言叫“RIF”。這十幾年時間都一直不斷在加強語義表現的表達力,但最後證明這個做法是不太妥當的。


▌元數據框架到 RDF


文因互聯鮑捷:深度解析知識圖譜發展關鍵及技術脈絡 |百萬人學AI


我們講過,除了學術性非常強的描述邏輯 OWL 分支之外,知識圖譜還有另外一個分支是來自於元數據框架的。這個工作最早是 Guha 在 Apple 做的,Guha 這個人是非常值得關注的,因為某種程度上他是“知識圖譜之父”,在 1995 年時他在 Apple 發明了一個語言叫“MCF”,因為他那時候面臨一些問題,就是怎麼去表徵多媒體的數據,特別是圖像的數據,所以他就發明了一整套的元數據表徵方法。


到了 1997 年時 Guha 跟Tim Bray 做了 RDF/XML。1999 年網景公司發明了 RSS 語言,這個東西現在新一代的朋友們不一定知道了,回到 10 年前時看新聞都是用 RSS 訂閱的,其實 RSS 的第一個 R 就是 RDF。後來他們改了其他的名字,從本源上來講,技術剛剛開始的時候這個技術是 RDF 的應用。1999 年 RDF 被 W3C 收編了,變成了國際標準。


▌RDF


文因互聯鮑捷:深度解析知識圖譜發展關鍵及技術脈絡 |百萬人學AI


什麼是 RDF?這裡給一個例子,它是非常簡單的語言,本質上是三元組,主語、謂語、賓語就是個三元組。比如“我叫鮑婕”,“我”是主語,“是”是謂語,“鮑捷”是賓語。在 RDF 這個框架下,萬事萬物各種複雜的關係最後都被拆分成三元組,如果從圖形來表示,三元組就是一個主語、一個謂語,中間有一條線一個箭頭是賓語,可以把各種各樣的模型都分解成這樣的三元組。


從 1997 年有了 RDF,1998 年有了 RDFS,2004 年邏輯學家給 RDF 加了一個語義,因為他們認為 RDF 必須要能夠推理,所以 2014 年進一步加強,最後有了 RDF1.1,這是 RDF 大概 20 多年的發展史。


小結:從弱語義到強語義的嘗試(元數據)


文因互聯鮑捷:深度解析知識圖譜發展關鍵及技術脈絡 |百萬人學AI


RDF 和一開始提到描述邏輯方法是不一樣的,因為描述邏輯方法是從實驗室裡來的,它想構造一個龐大的體系,構建一個完美的知識表現語言,然後再尋找它的落地。


而 RDF 從一開始就是一個從實踐出發的、自底向上的一個語言。RDF 相對於 OWL 而言,是一個更加偏工程的、應用更多的語言,現在有很多人在用 RDF。我們日常生活中所遇到的絕大多數網站,現在都有某種類型的元數據,其中相當一部分就是用 RDF 不同的變種來實現的,所以 RDF 總的來說是一個比較成功的技術,因為它是來自於現實的技術。


▌關聯數據 Linked Data


從 2001 年這個領域正式形成,到 2006 年時語義網的技術堆棧已經變得非常複雜了。1999 年時有一個所謂的“語義網蛋糕模型”,對語義網不同的技術做了羅列。2006 年時語義網技術已經複雜到沒有人看得懂,沒有辦法用二維表達,必須用一個三維的圖才能夠把語義網所有的技術放在裡面。這就帶來了一個嚴重的問題,就是絕大多數的企業、開發者很難理解,無從下手。


文因互聯鮑捷:深度解析知識圖譜發展關鍵及技術脈絡 |百萬人學AI


到了 2006 年時我們的“神”Tim Berners-Lee 出來思考這個問題,他想與其要求大家現在把數據搞得很漂亮,不如讓大家把數據公開出來。只要數據能夠公開出來,數據能夠連在一起,我們就會建立一個生態,這套想法他稱為“關聯數據”。


文因互聯鮑捷:深度解析知識圖譜發展關鍵及技術脈絡 |百萬人學AI


他提出了數據發佈的基本原則,上圖是我從他的博客上面提取出來的,我也非常推薦大家好好看他的博客“Design Issues”,Tim Berners-Lee 會提前 20 年時間去想人類的未來是什麼樣的,我們的 Web 到底應該遵循什麼樣的原則。


在關聯數據的定義上,他定義了幾層什麼是好的關聯數據:第一是在網上,一顆星;二是機器能夠自動讀,這就有兩顆星;三是儘可能用一個公有的格式,不要是某個公司私有的,這樣能夠促進公開交換,做到這點就有三顆星;因為是 W3C 提出來的,必須用 RDF,用 RDF 就有四顆星;如果 RDF 有 ID 把它連在一起就是五顆星。這就是 Tim Berners-Lee 提出的關聯數據的五星標準。


小結:從強語義到弱語義的嘗試(關聯數據)


2006 年之所以 Tim Berners-Lee 要推進這個轉變,就是因為他當時看到了有些風險。語義網的頭 5 年時間並不是特別成功,因為沒有人願意發佈數據,這時候 Tim Berners-Lee 出來帶領大家調整方向,不要再去強調很強的語義和推理了,可能一個比較弱的語義或者一個結構化本身就已經足夠了,這就是 Tim Berners-Lee 用“關聯數據”概念再次盤活了這個領域。


▌新的綜合:交換語言


文因互聯鮑捷:深度解析知識圖譜發展關鍵及技術脈絡 |百萬人學AI


這張圖上總結了知識交換語言一系列的發展,剛才提到 RDF,RDF+HTML,變成了 RDFa,還有另外一種叫 Microformat,這都是非常多網站上已經用到的元數據語言。RDF+HTML5 就變成了 Microdata,RDF+JSON 就變成了 JSON-LD。所以傳統的 RDF semantics 就是基於 XML 的 semantics,現在不太多見了,因為那個東西非常複雜,學習成本非常高。


現在我們看到的大部分 RDF 從概念上是 RDF 的變種,但是語法形式在網站上打開元代碼看都有元數據。大概 3 年前統計,有 30% 的網頁已經有語義數據了,現在應該至少超過一半的網站都有語義數據,所以 RDF 是很成功的一個東西。


▌新的綜合:存儲語言(圖數據庫)


文因互聯鮑捷:深度解析知識圖譜發展關鍵及技術脈絡 |百萬人學AI


當數據多了以後面臨另外一個問題,就是如何去存儲和操作知識圖譜的應用數據。大公司和小公司各自有自己不同的解決方案,統稱為“圖數據庫”。為什麼語義網的數據庫稱它為“圖數據庫”?前面幾張 PPT 講到 RDF 時,其實 RDF 就是各種事情之間的關聯,我們把這種關聯畫出來,變成很大的一個圖,很自然的就用圖數據庫進行知識圖譜的存儲。所以谷歌、微軟各個大廠都有自己的圖數據庫,至少是定製化的數據庫。


圖數據庫這件事情上後來產生了兩個新的流派,一個流派叫“RDF 數據庫”,另外一個叫“屬性圖數據庫”,雖然同樣是圖,但兩種數據庫關聯繫統的定義是完全不一樣的。因為 RDF 這種圖本質上強調推理邏輯;而屬性圖要放開很多,而且屬性圖發展過程中工程化做得非常好。


小結:從強語義到弱語義的嘗試(圖數據庫)


在圖數據庫的嘗試當中,我們再次把語義給弱化了,從強語義到弱語義,因為如果我們用強語義就用 RDF 數據庫,如果我們允許有弱語義就可以用圖數據庫。最後證明,圖數據庫的發展速度遠遠快於 RDF 數據庫。所以從實踐當中總結出來的東西總是有生命力的,如果只是基於純理論的思考設計出來的東西通常是沒有生命力的。


Lean semantic Web


文因互聯鮑捷:深度解析知識圖譜發展關鍵及技術脈絡 |百萬人學AI

在整個領域發展過程中,我慢慢也有一些思考。後來我有一個博客叫“語義噪聲”,這裡記錄了很多我對語義網大大小小事情的想法。那天統計了一下,加在一起大概有 300 多頁紙的內容,如果有空了會整理出來給大家看。


這裡我列舉了一些跟今天講課內容關係比較緊密的東西,包括為什麼語義網會不斷的去簡化,為什麼鏈接數據最後要演化成所謂的知識圖譜。我之前的博客裡都寫過,歡迎大家去看一看。


還有 github 上,大連理工大學的耿新鵬博士把我博客文章整理到 github 上了,大家不用翻牆就可以看得到了。


▌總結


其實知識圖譜從 2012 年穀歌提出之後,它進入了新的綜合的過程。知識圖譜在理論上並沒有特別大的進步,因為這些工程包括邏輯推理幾十年來一直都是這樣。進步的地方在哪裡?通過實踐發現,我們要想實現一個人工智能非常複雜的分支,其實是沒有辦法用那種學院派辦法來做的。我們只有理論結合實際,甚至從實踐中出發總結出產品來、總結出語言來,這樣東西的生命力遠遠大於一群專家坐在屋子裡討論出來的。


知識圖譜的領域從 2006 年往前一直不斷從弱語義到強語義的發展過程中,這個階段最後被證明是不太成功的。2006 年之後這個領域不斷的強調工程、強調應用、強調數據、強調跟實踐最相關的東西,語義也進一步弱化,又從強語義再次迴歸到弱語義。2012 年穀歌的知識圖譜是完全拋棄掉語義的。


從二十年來的歷史表明,從實踐中總結的方法要優於從頂向下設計的方法。如果你有一個很好的想法或者一個很好的語言,並不能保證別人就能夠用起來,除了要貼合用戶的需求之外,還有大量工具工作和生產工具的工作,這就形成了產業鏈。


所以在知識圖譜領域,我們不能狹隘看它的某一種語言或者某一種技術,它是一個體系的,就是一大堆結構化數據從生產到存儲到檢索的全流程工具豐富程度,才決定這個技術能不能落地。簡單的優於強大的,太過複雜的比如 OWL 最終用不起來,反而比較簡單的的像 RDF、最近比較火的 JSON-LD 用得越來越多。越簡單越好,這就是 20 年來最核心學習到的東西。


▌展望


知識圖譜從 2015 年之後,就在實踐中應用越來越廣泛。經過這幾年培育,在不同的領域裡,像醫療、法律、金融都已經有比較好的公司建立起市場口碑了。相信知識圖譜還會向更多其他的垂直領域進行滲透。


我們這幾年時間最主要的工作,不管在中國,還是在美國,都是促進了知識圖譜工具的建設。這是我今天晚上第三次強調工具了,如果你離開一整套的工具鏈條的話,比如校驗工具、編輯工具、檢索工具、推理工具,開發是非常難做的。


知識圖譜本質上來說是一種程序,它是為了機器理解世界是什麼時寫的一種程序。知識工程和軟件工程一樣,需要很多人在一起協作才能夠做好。我們經過這幾十年軟件工程總結出一整套的打法來,可以讓比較笨的人或者專業度不那麼強的人,也可以去做開發工作。對於知識工程而言,目前沒有達到那個點,這就是為什麼知識工程那麼貴的原因。但是我相信今後一段時間內工具的建設會不斷改善,我們自己也在做一些工具,將來會提供給大家用。


▌相關資料


下面是是跟語義網有關的參考資料,我刻意沒有去列近期的東西,因為絕大多數重要的東西在 2012 年前就有了,2012 年之後的東西沒有那麼太必要搞明白,我們優先把這個領域本源的東西看一下,相信對大家是有價值的。如果大家對英文還 OK,我建議大家讀讀 W3C 一系列標準,包括 RDF 有一個入門指南寫得非常好,OWL 也有一個入門指南是我參與寫作的。


總的來說,到目前為止知識圖譜在中國沒有特別好的書來講,王昊奮、漆桂林、陳華鈞老師他們正在寫。其他的包括知識抽取、知識檢索工具的總結在W3C上也有,歡迎大家去看一看,可以解惑。


The Semantic Web


知識表示 + 知識推理理


  • RDF:https://www.w3.org/TR/2004/REC-rdf-primer-20040210/
  • RDFa: https://www.w3.org/TR/rdfa-core/
  • JSON-LD: https://www.w3.org/TR/2014/REC-json-ld-20140116/
  • RDFS:https://www.w3.org/TR/2014/REC-rdf-schema-20140225/
  • OWL:https://www.w3.org/TR/2004/REC-owl-features-20040210/https://www.w3.org/TR/2012/REC-owl2-primer-20121211/
  • Prov:https://www.w3.org/TR/prov-overview/


More Inference & Reasoning:

  • RIF:https://www.w3.org/TR/rif-primer/
  • SPARQL based reasoning: http://vos.openlinksw.com/owiki/wiki/VOS/VirtSPARQLReasoningTutorial
  • Description Logic Primer: https://arxiv.org/abs/1201.4089


知識檢索


  • SPARQL:https://www.w3.org/TR/sparql11-overview/
  • SPARQL Tools: https://www.w3.org/2001/sw/wiki/SPARQL


知識抽取


  • Information Extraction: https://web.stanford.edu/~jurafsky/slp3/21.pdf
  • NER: http://www.cfilt.iitb.ac.in/resources/surveys/rahul-ner-survey.pdf, https://nlp.cs.nyu.edu/sekine/papers/li07.pdf
  • Entity Linking: http://dbgroup.cs.tsinghua.edu.cn/wangjy/papers/TKDE14-entitylinking.pdf
  • Book: https://www.w3.org/2001/sw/wiki/Books


分享到:


相關文章: