观点 - 论语义网和知识图谱的区别

Q:语义网和知识图谱有区别吗?如果有,区别何在?

当下关于知识图谱的讨论越来越热烈,但是经常听到有人用“语义网”来代替“知识图谱”,或者说认为知识图谱本质上就是语义网。这种想法不无道理,我也聚德这两者很大程度上是相通的,甚至知识图谱本来本就脱胎于语义网(Google收购Freebase改造后推出Google Knowledge Graph)。然而,我个人认为语义网和知识图谱还是有区别的。

首先从两者的源流来看。

语义网是Tim Berners Lee 在1998年提出来的概念。他本人在当年W3C的《Semantic Web Road map》里面对语义网的描述是:

Machine-Understandable information: Semantic Web

The Semantic Web is a web of data, in some ways like a global database.

他的理想和1990年提出Word Wide Web的时候并没有大不同,都是整合全球的信息,让每个人都能触达每一份信息。差别是1998年的时候World Wide Web 本质是是一个全球文件系统 (global file system),因为web上的内容绝大多数都是HTML文件,以及少量的PDF、视频、音频之类的多媒体文件。他希望更进一步,把web变成一个全球数据库 (global database)。这样一来不仅每个人能得到每一份信息,而且机器也能处理这些信息(即便在今天,机器处理文本信息都是的能力都还是不如处理数据库中结构化信息的能力)。

知识图谱是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的知识图谱就是从Freebase导入的,Freebase就是一个语义网项目,使用了RDF模型、用URI标识数据、能用SPARQL查询数据、还定义了自己的本体结构。而现行的图数据库,要把数据导出成RDF也不难,Neo4j就支持直接导出RDF数据。

如今语义网和知识图谱都很繁荣,应该都是前景不错的研究和产业方向。


本作品首发于简书博客园平台,采用知识共享署名 4.0 国际许可协议进行许可。


本文直接或间接地使用了以下著作的内容:

  1. Tim Berners Lee 《Semantic Web Roadmap》
  2. Amit Singhal 《Introducing the Knowledge Graph: things, not strings》
  3. Tim Berners Lee 《RFC3986》
    ······

猜你喜欢

转载自www.cnblogs.com/zrq96/p/10327620.html