观点-论语义⽹和知识图谱的区别胜利教育
瓜子的好处和坏处Q:语义⽹和知识图谱有区别吗?如果有,区别何在?
当下关于知识图谱的讨论越来越热烈,但是经常听到有⼈⽤“语义⽹”来代替“知识图谱”,或者说认为知识图谱本质上就是语义⽹。这种想法不⽆道理,我也聚德这两者很⼤程度上是相通的,甚⾄知识图谱本来本就脱胎于语义⽹(Google收购Freeba改造后推出Google Knowledge Graph)。然⽽,我个⼈认为语义⽹和知识图谱还是有区别的。
⾸先从两者的源流来看。
豆腐制作过程
语义⽹是Tim Berners Lee 在1998年提出来的概念。他本⼈在当年W3C的《Semantic Web Road map》⾥⾯对语义⽹的描述是:Ma c hine-U nder sta nda ble info rma tio n: Sema ntic Web
查银行卡余额rm a
The Semantic Web is a web of data, in some ways like a global databa.
他的理想和1990年提出Word Wide Web的时候并没有⼤不同,都是整合全球的信息,让每个⼈都能触达每⼀份信息。差别是1998年的时候World Wide Web 本质是是⼀个全球⽂件系统 (global file system),因
为web上的内容绝⼤多数都是HTML⽂件,以及少量的PDF、视频、⾳频之类的多媒体⽂件。他希望更进⼀步,把web变成⼀个全球数据库 (global databa)。这样⼀来不仅每个⼈能得到每⼀份信息,⽽且机器也能处理这些信息(即便在今天,机器处理⽂本信息都是的能⼒都还是不如处理数据库中结构化信息的能⼒)。attributed
知识图谱是Google在2012年提出来的概念。Google的做法是在⾃家建⽴了⼀个⼤型的图数据系统,把⾃⼰的信息组织成⼀个图谱。有了这个图数据系统,Google在搜索上的能⼒上升了⼀个台阶,最起码多了⼀道新的程序,⽽且和原本基于向量空间模型的⽅案很不同。有了知识图谱
后,Google不仅仅能返回信息量⼤但密度低⽂档,还能返回信息量⼩但密度⾼的知识卡⽚。
我认为语义⽹和知识图谱,两者的最初的动机是不⼀样的。⼀个是开放的、共享的、全球的数据库,另⼀个是封闭的、排外的、⾃家的数据库(虽说Google的数据也是全球范围的)。⽬标的不同会导致⽅法的不同。
语义⽹使⽤的数据模型RDF和W3C制定的语义⽹技术栈就是围绕其开放性、共享性、全球性等特点设计的。1998年时数据库采⽤的主流的数据模型是关系数据模型(现在也是)。但是关系数据库的⼀个缺点是需要事前定义好schema,也可以认为是表结构和表关系。这就带来⼏个问题,最⼤的问题是改动起来很⿇烦,当数据量极⼤的时候成本会很⾼。所以语义⽹采⽤的数据模型是RDF。RDF最初其实
不是数据模型,⽽是⼀种数据交换格式,由Ramanathan V. Guha在苹果公司开发,最初名叫Meta Content Framework,后来改进成Resource Description Framework。⽤RDF对数据建模,不需要事先定义schema,所以也有⼈把RDF称作schemaless的建模语⾔。RDF本质上也是对实体和关系建模,⾸先⽤Unicode将数据(实体entity、关系predicate和字⾯量literal)编码,然后⽤URI唯⼀标识实体和关系。这样⼀来,⼀个RDF数据模型也成了⼀个图数据模型,各种实体通过关系链接在⼀起,实体⼜有⾃⼰属性(字⾯量),形成了⼀个⽹。为什么使⽤URI来标识?我认为这是因为语义⽹上的数据应该像⽂档⼀样能被访问,⽽⽂档就是通过URI访问的,于是这个传统就被应⽤到语义⽹上了。⾄于为什么⽂档⽤URI标
识,Tim Berners Lee的原话是:
A Uniform Resource Identifier (URI) provides a simple and extensible means for identifying a resource
更多URI的好处可以查看相应的RFC⽂档
知识图谱呢?⼀说起知识图谱,⼈们想起的应该不是⼀个开放共享的全球数据库,⽽是⼀个⾃有的图数据系统,就好像⾃家的关系数据库⼀样。Google的知识图谱就是⼀个私有的图数据系统。互联⽹是全体使⽤,全体维护的(W3C之类的也是公共组织),但是Google的知识图谱是⼀个⾃家使⽤,⾃家
维护的数据库。既然是⾃家经营、⾃负盈亏,⽽且规模也没有全球数据库那么⼤、功能上也不要求全世界的⼈⾃由编辑,那就可以怎么容易怎么来。想⼀下互联⽹和⾃家的⽂件系统。我们⾃⼰的⽂件系统可不是⽹状的⽽是树状的,标识⽤的是⽂件名⽽不是URI。当然我们可以把⽂档转化成HTML⽂档,把个⽂档连城⼀个⽹,然后放在服务器上,那么⽹上其他⼈就可以通过URI访问了。⽽且现在我们也不是把⽂档直接放在服务器⽬录下,⽽是放进数据库,需要时⽤后台程序从该数据库中把相应内容调出来,加上HTML模板渲染成⼀个HTML⽂档,然后发到客户端去。
所以现在⼯业界做知识图谱,做的都是像Google那样⾃家的数据库,底层可以⽤的是关系数据库,或者改造后的关系数据库,如postgresql,配合⼀些nosql的数据库。对于数据模型,⽬前业界采⽤的主流图数据模型是LPG(Labeled Property Graph)。其标准是Apache的TinkerPop。⾄于LPG和RDF的优劣势对⽐,这是⼀篇典型的⽂章,作者是Neo4j的开发者。虽然⾥⾯⼀些观点我很不同意,但作为思考的起点还是不错的。(PS:本⼈不在⼯业界,本段观点纯属道听途说。)
经过以上对⽐,我认为语义⽹和知识图谱不是⼀个东西,他们的⽬标和使⽤的技术都不⼀样。但既然有⼈把它们混在⼀起说,那就说明这两个东西还是很像的。事实上也确实如此,它们本质上都是图数据模型,应该都可以做(⾄少⼤部分)相同的事情。⽽且两者之间转换起来也很简单。Google的知识图谱就是从Freeba导⼊的,Freeba就是⼀个语义⽹项⽬,使⽤了RDF模型、⽤URI标识数据、能⽤SPARQL查询数据、还定义了⾃⼰的本体结构。⽽现⾏的图数据库,要把数据导出成RDF也不难,
Neo4j就⽀持直接导出RDF数据。
欧洲标准如今语义⽹和知识图谱都很繁荣,应该都是前景不错的研究和产业⽅向。
本作品⾸发于简书 和 博客园平台,采⽤知识共享署名 4.0 国际许可协议进⾏许可。
本⽂直接或间接地使⽤了以下著作的内容:
销售计划方案1. Tim Berners Lee 《Semantic Web Roadmap》
vivo主题
2. Amit Singhal 《Introducing the Knowledge Graph: things, not strings》
3. Tim Berners Lee 《RFC3986》
······