本系列参考了市面上已知的,几乎全部“知识图谱”相关文章,并总结提炼出一套适合初学者入门的“知识图谱”的知识体系,希望大家能有所收获。
一,知识图谱—盲人摸象
大家都说,自己在做知识图谱,但从不同人分享的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数据模型的语言,基于(实体,对象属性,实体)和(实体,数据属性,值)的限定,匹配查询数据结果。
代码语言:javascript复制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,基于学习的推理
基于语义网,使用机器/深度学习方法,自动发现普通人难以发掘的新的概念或属性,作为其他推理能力的扩充。比如: 图嵌入