Freebase.com语义数据库浅析,电脑技术|网络技术|网页设计|程序设计

来源:百度文库 编辑:神马文学网 时间:2024/04/29 06:32:30

Freebase.com语义数据库浅析

  

  架构概述

  
Freebase.com是由Metaweb开发的语义数据库,其架构核心是Metaweb数据库。此数据库是以节点和节点间的关系的图状结构来组织数据,它和传统的关系数据库以表的方式组织数据完全不同。

  Metaweb服务器与图结构数据库紧密绑定,通过二进制数据存储块(类似SQL中的BLOBs)来储存图节点和节点关系,并以哈希表的方式存储组织数据,它在用户下载上传数据时的起到临时数据缓存器的作用,对数据进行检验处理后,再保存到Metaweb数据库中。Freebase通过访问控制模块来规范各用户组的行为。所有用户通过Portal程序来读取数据库中的数据。

  Metaweb数据库

  
Metaweb数据库的图结构是由一系列的节点和反映节点间关系的有向连线组成。图中每个节点都记录与自己相关的信息。数据库中的所有相关数据都以记录节点间关系的方式组织数据进行存储。

  Metaweb数据库中,以数组的方式对节点及其关系的元数据进行建模,以表格的形式进行存储,表格中的每条数据对应一个节点关系数组。节点关系数组一般由4个主要的数组成员组成,分别是源节点,属性(节点间关系),目标节点,源节点值,于是节点关系表中就按这四个成员设定相应的四列。

  Ø 属性以及其特点

  
Metaweb一个重要的概念就是“属性”,属性就是节点间的关系。Metaweb一个重要的特性就是系统不会以已经存在的节点关系对新关系进行预先定义。新的属性表示一种新的关系,可以被任何用户在任何时间定义。这也就是说,在图中,属性也可以是节点。当属性为一节点时,它将保存在数组表中的“源节点”列中,并且与自身产生关系。

  在Metaweb数据库中,节点的属性通常不是唯一的,即节点间的关系不是唯一的。但是可以通过“/type/property/unique”属性进行设置。一组以相同关系指向到同一个特定节点的节点群可以认为是一组值的无序设定。

  Ø 基础属性

  
Metaweb中定义一些必要属性做为Metaweb架构中最基础的部分,这些属性是Freebase运行的基础。如“/type/object/name”属性支持节点可以定义可读性强的名称。前面谈到的“/type/property/unique”属性也是一个。实际上,这类属性为其他用户定义的属性规定它们的基本的行为,并且Metaweb的行为也依据这类属性的值。如果一个属性的名称以“/type”开头,那么它就是一个具有架构层面上的重要属性。如下图所示。

  +--/type/id

  

  +--/type/int

  

  +--/type/float

  

  +--/type/boolean

  

  +--Value Types--+--/type/text

  

   +--/type/rawstring

   +--/restaurant domain

   +--/type/uri

   +--/location domain

   +--/type/datetime

   +--/film domain +-/music/track

  Types-+ +--/type/key

   +--/music domain--+-/music/album

  

   +--Freebase Types-----+--/book domain +-/music/artist

  

   +--etc.

  

  +--Object Types-+--Core Types (/type domain)

  

  +--Common Types (/common domain)

  

  +--User-defined types-+--/user/joe/default_domain

  

  +--/user/joe/music

  图2 Metaweb 属性目录

  Ø 数据库检索原理

  
Metaweb图为有向图:图中节点关系的方向都是从源节点指向目标节点。虽然节点间的连线是有向的,当执行数据库查询时,Metaweb可以向前和向后遍历所有有向连线来获取相匹配的结果。因为Metaweb会按不同方向遍历连线,这样也可以将节点间连线看作具有“双向性”,于是,在属性的定义时,也会呈现“双向性”。但是需要将一个方向上的属性定义为“主属性”,反向上定义为“扭转属性”,而这两个属性也称为“互惠属性”。Metaweb数据库节点关系表中,可以通过“/type/property/reverse_property”属性标注主属性和扭转属性,从而实现关系的双向遍历。

  具体而言就是,当用户输入他的问题时,Metaweb的数据库引擎就会分析用户输入问题,并得到问题的主体和可能所处的领域,在“源节点”列和主属性“属性”列中进行检索,然后会将所有相匹配的“目标节点”列中的值报告给用户。也会反向在“目标节点”列和扭转属性“属性”列中检索,也将所有相匹配的“源节点”列中的值报告给用户,这样可以将所有用户想知道的信息呈现给用户。

  访问权限控制

  
Metaweb是对任何用户完全开放的。任何人都可以链接到Freebase.com上读取数据。但是用户需要添加编辑数据时,就需要访问控制模块。Metaweb通过“/type/user”,“/type/usergroup”,以及“/type/permission”这几个属性实现用户的访问权限控制。访问控制模型也很简单,就是在每个对象都有一个“权限”属性,并且指向“/type/permission”属性。这个权限属性就是指定了用户组,不同用户组成员可以操作的对象就不同。这个简单的访问控制模型默认是完全开放的,因为Freebase.com任何用户可以自由添加编辑绝大部分的Freebase.com对象。但是上节中涉及到的规范Metaweb架构基础行为的type属性是不能容许普通用户进行编辑添加的,这也保证了Freebase.com的正常运行。

  小结

  
从以上对Metabase数据库的结构以及检索原理的阐述中,可以看到Metabase设计的这款语义数据库的理念十分先进,与目前流行的企业级关系数据库在组织和存储数据等方面完全不同。这种以图结构方式组织管理数据的模式,也许可能成为新一代语义数据库设计的标准。本文是从目前Metabase已公布的技术文档,以及其他相关技术评论中,吸收总结出Freebase.com这个世界最大语义数据库的实现原理,但是由于具体的技术细节资料的缺乏,还无法完整的全面的给出其实现的各个细节。但随着Metabae对其技术细节的进一步公开,以及业界对语义数据库技术的不断研究,这将使我们有机会能更加深入清晰的理解语义数据库的“庐山真面目”。