如果您是 Freebase 新手,本部分将介绍了解 Freebase 运作方式所需的基本术语和概念。
图表
Freebase 数据存储在称为图的数据结构中。图由通过边连接的节点组成。在 Freebase 中,节点使用 /type/object 定义,边使用 /type/link 定义。通过将数据存储为图,Freebase 可以快速遍历主题之间的任意连接,并轻松添加新架构,而无需更改数据结构。
主题
Freebase 包含超过 3, 900 万个与现实世界实体(例如人物、地点和事物)相关的主题。由于 Freebase 数据以图表形式表示,因此这些主题对应于图表中的节点。不过,并非每个节点都是主题。请参阅有关 CVT 的部分,了解非主题节点的示例。
Freebase 中包含的主题类型示例:
- 实体,例如鲍勃·迪伦、卢浮宫、土星,
- 艺术/媒体创作,例如《黑暗骑士》(电影)、《加州旅馆》(歌曲),
- 分类,例如惰性气体、脊索动物,
- 抽象概念,例如爱,
- 思想流派或艺术运动,例如印象派。
有些主题之所以值得关注,是因为它们包含大量数据(例如,沃尔玛),有些实体之所以值得注意,是因为它们链接到许多其他主题,可能涉及不同的信息领域。例如,爱情、贫困、侠义等抽象主题没有太多相关属性,但经常作为图书主题、诗歌主题、电影主题等出现,因此更加引人注目。
类型和属性
任何给定主题都可以从许多不同的角度来看,例如:
- 鲍勃·迪伦曾担任词曲创作人、歌手、表演者、图书作者和电影演员;
- 列奥纳多·达·芬奇是画家、雕塑家、解剖学家、建筑师、工程师、…;
- 爱情是图书主题、电影主题、戏剧主题、诗歌主题……;
- 任何城市都是一个位置,可能是一个旅游目的地,也是公务员的雇主。
为了体现许多主题的多方面性质,我们在 Freebase 中引入了类型的概念。Freebase 中的主题可以分配任意数量的类型。与 Bob Dylan 相关的主题被分配了多种类型:词曲作者类型、音乐作曲家类型、音乐人(歌手)类型、图书作者类型等。每种类型都包含一组与该类型相关的不同属性。例如,
- 音乐人类型包含一个属性,其中列出了 Bob Dylan 制作的所有专辑以及他演奏过的所有乐器;
- 图书作者类型包含一个属性,其中列出了 Bob Dylan 撰写或编辑的所有图书,以及他的写作思想或流派;
- 公司类型包含许多属性,用于列出公司的创始人、董事会成员、母公司、部门、员工、产品、逐年收入和利润记录等。
因此,您可以将类型视为属性的概念性容器,这些属性通常是描述特定方面信息所必需的。(您可以将类型视为类似于关系表,并且每个“类型”表都有一个外键,指向唯一定义每个主题的“身份”表。)
网域和 ID
正如属性会分组为类型一样,类型本身也会分组为网域。可以将网域视为您喜爱的报纸中的版块:商业、生活方式、艺术与娱乐、政治、经济等。每个网域都有一个 ID(标识符),例如
网域的 ID 看起来像文件路径或网址中的路径。
每种类型也都有一个 ID,其 ID 基于所属的网域。例如,“公司”类型属于“业务”网域,并被赋予 ID /business/company
。下面是其他一些示例:
/music/album
是音乐网域中(音乐)专辑类型的 ID/film/actor
- 电影网域中的 Actor 类型/medicine/disease
- 医药领域的疾病类型
就像类型从其网域继承 ID 的开头部分一样,属性也会从其所属的类型继承 ID 的开头部分。例如,公司类型的“行业”属性(用于指定公司所属的行业)的 ID 为 /business/company/industry
。下面是其他一些示例:
/automotive/engine/horsepower
是(汽车)发动机类型的“马力”属性的 ID/astronomy/star/planet_s
是 Star 类型的 Planets 属性的 ID(用于列出恒星周围的行星)/language/human_language/writing_system
是“人类语言”类型的“书写系统”属性的 ID
因此,尽管 Freebase 中的类型并未按层次结构排列,但网域、类型和属性的 ID 在概念上是按类似文件目录的层次结构排列的。
复合值类型
复合值类型是 Freebase 中的一种类型,用于表示每条条目都包含多个字段的数据。复合值类型 (CVT) 用于在 Freebase 中表示复杂数据。起初可能有点令人困惑,但 CVT 是 Freebase 架构中非常重要的一部分,可让它更准确地对主题之间的复杂关系进行建模。
请考虑以下示例:城市人口数量会随着时间的推移而变化。也就是说,无论何时您查询 Freebase 中的人口数据,至少都是在隐式请求特定日期的人口数据。涉及两个值:人数和日期。下面举例说明了 CVT 的实用性。如果没有主题,若要对人口数据进行建模,您需要创建一个主题,并将其命名为“1997 年温哥华的人口”,然后将信息提交到该主题。
您可以将 CVT 视为无需您提供显示名称的主题。与常规主题一样,CVT 具有可独立引用的 GUID。不过,Freebase 客户端对它们的处理方式与对主题的处理方式大相径庭。在大多数情况下,CVT 的每个属性都应该是消除歧义属性。
主题 MID
虽然主题可能可以通过命名空间/键 ID 来识别,也可能无法识别,但始终可以通过 MID(机器标识符)来识别,该标识符由 /m/
后跟一个 base-32 唯一标识符组成。MID 在主题创建时分配给主题,并在主题的整个生命周期内进行管理。在合并或拆分主题时,它们发挥着至关重要的作用,即使物理 Freebase 身份(主题的 GUID)可能会发生变化,外部应用也能跟踪逻辑主题。机器生成的 ID 与其他人类可读的 Freebase ID(由“id”属性返回)的不同之处在于:
- 保证存在
- 机器生成
- 旨在支持离线比较
- 并非旨在向人类传达含义
- 短(可能为固定长度)
- 非常适合在外部系统和组件之间快速交换密钥(外部、交换)
MID 是建议用于在 Freebase 中处理主题的标识符
命名空间、键和主题 ID
域名、类型和属性 ID 的文件目录式层次结构只是一个更通用概念(即命名空间和键)的应用示例。命名空间类似于文件目录,而键类似于文件名。正如特定文件目录中的所有文件名必须彼此唯一一样,特定命名空间中的所有键也必须彼此唯一。
更具体地来说,/business
是与“商家”网域对应的命名空间。其中,与业务相关的类型会获得键(例如company
),这些 ID 彼此之间必须是唯一的。每种类型的 ID 都是通过将相应键附加到命名空间的 ID 来形成的(例如,/business/company
)。
除了与网域和类型对应的命名空间之外,还有多种其他类型的命名空间。最重要且最常遇到的是 /en
命名空间。这是英语命名空间,其中大多数知名主题都可以获得唯一的键,以形成人类可读的英语 ID。例如,多产的鲍勃·迪伦非常有名,因此他在 Freebase 中的主题在 /en
命名空间中获得了键 bob_dylan
,因此该主题的 ID 为 /en/bob_dylan
。借助此 ID,您可以通过简单的网址在 Web 客户端中访问他的主题
有关房源的更多信息
最后一个要讨论的基本概念涉及 Freebase 属性与关系型数据库技术(即关系型表列)中的类似概念之间的主要区别。对于每一行,关系型表格列只能包含一个值。例如,假设有一个典型的“图书”关系型表,其中包含一个名为“作者”的列。对于“book”表中的每一行,“author”列只能包含一个指向“author”表的外键。如果一本书恰好有多个作者,那么这种简单的关系型架构设计就行不通了,我们必须新建一个表来对作者身份进行建模。也就是说,我们需要一个“图书”表、一个“作者”表和一个“著作”表来存储图书与作者之间的多对多关系。当您从一种架构设计切换到另一种架构设计时,检索数据的方式会发生很大变化。
与传统数据库技术不同,Freebase 认为多值属性在对现实生活中的数据进行建模时非常有用,因此默认情况下支持多值属性。也就是说,在创建 /book/written_work/author
属性时,系统假定每本书允许多个作者,并且您可以通过完全相同的方式查询多值属性和单值属性。无需考虑是否需要与用于表示多对多关系的第三个表进行联接。
摘要
- 类型是相关属性的概念性容器,通常用于描述主题的某个方面。
- 一个主题可以分配一个或多个类型(默认类型为
/common/topic
) - 与属性分组为类型类似,类型分组为网域。
- 系统会在命名空间/键层次结构中为网域、类型和属性分配 ID。
- 常见的知名主题在
/en
命名空间中具有 ID,这些 ID 是用户可读的英文字符串。 - 主题在 Freebase 中由 GUID 唯一标识。
- 属性默认是多值的,并且多值属性和单值属性可以采用相同的方式进行查询。