乾貨 | 初學者入門必看的「知識圖譜」解讀(上)
- 2019 年 10 月 4 日
- 筆記
本系列參考了市面上已知的,幾乎全部「知識圖譜」相關文章,並總結提煉出一套適合初學者入門的「知識圖譜」的知識體系,希望大家能有所收穫。
一,知識圖譜—盲人摸象
大家都說,自己在做知識圖譜,但從不同人分享的PPT來看,講述的重點都不一樣,那知識圖譜到底是什麼?

二,語義網路 vs. 語義網
1,語義網路(Semantic Network)
Quillian在1968年提出的知識表達模式,其用相互連接的節點和邊來表示知識。完全由用戶自定義,無任何標準和規範,難以用於實踐。

2,語義網(Semantic Web)
Tim.Lee在1998年提出的一個新概念,描述互聯網中資源和數據之間的關係,使得互聯網上的數據變得機器可讀。常被用來指代一整套技術棧框架。
即,語義網是比語義網路更高級的概念,它提供了一整套規範和技術棧來解決實際問題。
三,語義網的技術棧
1,技術棧簡介

(1)編碼方式(UNICODE),資源標識符(URI):數據的編碼方式和表示方式 (2)數據序列化方法(Syntax):數據的序列化方法,包括但不僅限於XML,N-Triples,Turtle,Json-LD (3)數據描述框架(RDF):數據模型,表示知識的一種方法和手段 (4)RDFs/OWL:工業標準,使用預定義的辭彙,對RDF進行類和屬性定義,即,Schema (5)RIF/SWRL:推理規則(Rule),使用預定義的規範,使基於RDFs和OWL描述的RDF數據,具有推理能力 (6)SPARSQL:基於RDF+(RDFs/OWL: optional)的查詢語言 (7)其他:Cryptography + Logic + Proof + Trust:中間層概念,決定應用層如何確定數據的可靠,精確和值得信賴
2,技術棧詳解
- (1), URI和字面量
URI:類似URL,使用全局唯一的標識符來表示知識中的不同元素。比如,
http://www.kg.com/person/1: 表示人物(person)概念中id=1的某個人,
http://www.kg.com/ontology/fullName: 表示屬性(ontology)中的fullName屬性,
http://www.kg.com/ontology/hasBirthPlace: 表示屬性(ontology)中的在"哪兒出生(hasBirthPlace)"的關係。
其中:http://www.kg.com是圖譜id
字面量:"1976-09-18"^{}^{}date: 表示date類型的值
- (2),RDF
一個用URI和字面量表示的三元組數據模型,即,任何知識都可以通過(subject, predicate, object)來拆解。
其中,subject和predicate只能是URI,而obeject可以是URI或字面量。當object是URI時,表示(實體,對象屬性,實體),簡稱關係;當object是字面量時,表示(實體,數據屬性,值),簡稱屬性。
- (3),XML-Syntax
RDF本質上只定義了知識的表示規範,但不同實現對應不同的序列化方法。類似,UNICODE是規範,UTF8,UTF16或UTF32是實現方式。
即,XML:基於XML的RDF表示;Json-LD:基於Json的RDF表示;N-Triples:基於三元組的RDF表示等等。比如,N-Triples的表示:
(3).1, (實體,關係屬性,實體): <http://www.kg.com/person/1> <http://www.kg.com/ontology/hasBirthPlace> <http://www.kg.com/place/10086>.
(3).2, (實體,數據屬性,值): <http://www.kg.com/person/1> <http://www.kg.com/ontology/fullName> "想飛的貓"^{}^{}string.
即,XML-Syntax可以理解為RDF的落地物理數據,類似存儲在MySQL中某一行的數據
- (4),RDFs/OWL
用概念(Class),對象屬性(Object Property)和數據屬性(Data Property)來分別表示實體,關係和數據。
比如,定義,Person表示"人物"概念,hasChild表示"父母"的對象屬性,fullName表示"全名"的數據屬性。
即,(RDFs/OWL)可以理解為RDF的業務欄位定義,類似MySQL中對每個欄位的定義:欄位名,類型等,使RDF具有了真正的語義含義。
- (5),RIF/SWRL
依附於OWL,它們是集成在OWL上,對概念和屬性的約束和限定。它使OWL從此具備了語義推理能力,比如:
(5).1, A rdfs:subProperty B -> A是B的子屬性,比如,A是對象屬性"hasSon",B是對象屬性"hasChild";
(5).2, A owl:TransitiveProperty -> A屬性具有傳遞性,比如,A是對象屬性「位於」;
(5).3, A owl:inverseOf B -> A屬性與B屬性具有相反性,比如,A是對象屬性「父母」, B是對象屬性子女;
(5).4,A owl:equivalentClass B -> 在融合不同的語義網時,如果2個網路都基於OWL,可以直接限定本體映射。比如,網路1用A(Human)表示人物,網路2用B(Person)表示人物。
- (6),SPARQL
查詢RDF數據模型的語言,基於(實體,對象屬性,實體)和(實體,數據屬性,值)的限定,匹配查詢數據結果。
SELECT ?n WHERE { ?s rdf:type :Person. ?s :personName '周星馳'. ?s :hasActedIn ?o. ?o :movieTitle ?n }
四,語義網的推理能力
使用語義網的推理能力,可以豐富和擴展不完備的缺失數據,甚至識別並判定錯誤關係或錯誤屬性。
1,基於本體的推理:
RDFs/OWL是本體描述語言,所以,它們本身對概念和屬性的約束和限定就構成了W3C規範里,自帶的推理能力。比如:

2,基於規則的推理
用戶自定義規則,使用第3方工具(Jena),基於已定義好的RDFs/OWL文件,根據業務需求,指定新的概念和屬性,比如:
(1), ruleComedian:
(?p :hasActedIn ?m) (?m :hasGenre ?g) (?g :genreName '喜劇') -> (?p rdf:type :Comedian)
(2), ruleTranstive:
(?p :isLocated ?m) (?m :isLocated ?n) -> (?p :isLocated ?n)
3,基於學習的推理
基於語義網,使用機器/深度學習方法,自動發現普通人難以發掘的新的概念或屬性,作為其他推理能力的擴充。比如: 圖嵌入

