Freebase初探

基本概念:

Graphs  —————————————————————————-

Graphs 

Freebase的数据存储于graph这类数据结构中。 graph是由一些边连接在一起的节点组成。在Freebase中,节点使用/type/object定义,边使用/type/link定义。通过将数据存储成图形结构,Freebase能快速遍历topic之间的任意连接,同时也可以方便地添加新的schema而不需要改变数据结构。 

Topics 

Freebase有超过3千900万的有关真实世界中的像人,地址和事情的topic。因为Freebase数据是表示成图形,这些topic相当于图中的结点。但是,并不是每一个结点都是topic。查看有关CVTs章节有关结点不是topic的内容。 有关topic类型的例子:

  • 物理实体,如Bob Dylan, the Louvre Museum, the Saturn planet
  • 艺术/多媒体创造,如 The Dark Night(电影),Hotel California (音乐)
  • 分类 如: noble gas, Chordate
  • 抽象概念 : love 

有些topics是显著的因为他们拥有大量数据(如 Wal-Mart),有些topics之所有显著是因为他们连接到许多其它topic, 很可能是处于不同信息领域的domain。例如抽象概念的 love,poverty(贫困),chivalry(骑士精神)没有很多属性关联到他们,但他们经常以一本书的主题,诗歌的主题,电影主题等等,使得他们变得比较显著。

Types and Properties 

任何特定的topic都能从不同的视角来看,如:

  • Bob Dylan 是一个 作词者,歌手,performer,书的作者,电影演员
  • Leonardo da Vinci是一个画家,雕刻家,解剖学家,建筑家,工程师
  • Love 可以是书的主题,电影的主题,play subject, poetry subject,
  • city是一个地址,旅游胜地,公务员的雇主

为了获取许多topic的多面特性,我们在Freebase中引入 types概念。Freebase中的Topic可以有任何数量的types关联到他们身上。The topic about Bob Dylan is assigned several types: the song writer type, the music composer type, the music artist (singer) type, the book author type, etc。任何一个Type 包含了不同的属性集合。如:

  • The music artist type(音乐艺术家)包含了一个属性,列出了所有Bob Dylan创作的专辑,就像他所演奏的乐曲列表一样。
  • 。。。。。。

因此type可以看成是描述信息某一方面最共用的属性的概念容器,(你可以把type看成是一张关系表,每一张type表有一个外键,这外键是identity表中的唯一键,他定义了每一个topic)

Domains and IDs

就像属性可以归组成Type, Type本身也可以归组成 domains可以把domain想像成你喜欢的报纸的不同版面:商业,生活方式,艺术和娱乐,政治,经济等。任何domain都有一个唯一的标识:

  • /business 是business这一domain的标识
  • /music – 是music domain的标识
  • /film 是film domain的标识 

  domain 的id标识看起来像文件路径,或者说是web 地址的路径。

任何一个Type也有一个id, 它的id是基于它所属的domain。举个例子,公司 type 属于商业 domain, 它的id就是/business/company。

就像type它的id继承自domain, 属性的id也继承自它所属的type, 如 公司的产业属性的id是/business/company/industry.

尽管在Freebase中,type并没有形成层次结构,但domains, types, properties的id在概念上形成了文件目录形式的层次结构。

Compound Value Types 

在Freebase中,组合值类型被用来表示每一 entry有多fields的值。CVTs在Freebase中被用来表示复杂的数据。刚开始它可以有点让人不好理解,但是CVTs是Freebase schema中很重要的一部分,让Freebase能对topics之间复杂的关系进行建模。

考虑以下的例子:一个城市的人口随着时间在改变。那意味着在任一时间点向Freebase查询人口的时候,你是隐式地查询某一时间的人口数量。这里关联到两个值:人口数,时间。这个场景CVTs变得非常有用。缺少一个值的情况下,你可能会这样对人口数进行建模,建立一个topic,把它命名成”Vancouver’s population in 1997″ 。

一个CVT可以想象成一个不需要你去指定一个显式的名字。CVTs,像那些普通的topics,也有一个可以独立引用的GUID。然而,Freebase客户端对待CVTs和topics是有很多不同的。在大多数场景下,CVT的任何一个property是无二义性的。

Topic MIDs

topic 有可能被 namespace/key IDs标识,但也有可能不能被标识,但它肯定可能被MID标识—一个机器标识 ,它由/m/加上一个32位的唯一id组成。MIDs是在某topic被创建时被赋予的,在整个topic的生命周期中都是可以被管理。他们在topic被合并或者拆分时能起到重要的作用:允许外部系统能跟踪到逻辑上的topic就算是物理的Freebase ID(:GUID)发生变化。这些机器生成的id和用户具有可读性的id(Freebase中返回的id property)存在如下区别:

  • 保证存在
  • 机器生成
  • 为了支持离线对比而设计
  • 并不是为了人们的可读性而设计
  • 短(可能是固定长度)
  • keys在外部系统之间快速exchange 是比较理想的选择
MIDs是推荐的表示topic的标识