如果您刚接触 Freebase,本部分将介绍理解 Freebase 的工作原理所需的基本术语和概念。
图表
Freebase 数据存储在称为“图表”的数据结构中。图由边缘连接的节点组成。在 Freebase 中,节点使用 /type/object 定义,而边缘使用 /type/link 定义。通过以图表形式存储数据,Freebase 可以在各主题之间快速遍历任意连接,并轻松添加新架构,而无需更改数据的结构。
主题
Freebase 拥有超过 3900 万个有关真实实体(例如人物、地点和事物)的主题。由于 Freebase 数据以图表形式显示,因此这些主题与图表中的节点相对应。不过,并非每个节点都是主题。请参阅 CVT 部分,将其作为非主题节点的示例。
Freebase 中找到的主题类型示例:
- 实体实体,例如鲍勃·迪伦、卢浮宫博物馆、土星
- 艺术/媒体创作,例如《Dark Knight》(电影)、Hotel Hotel(歌曲),
- 分类
- 抽象化的概念(例如“love”)
- 思想或艺术运动的流派,例如,印象。
一些主题非常值得注意,因为它们包含大量数据(例如,Wal-Mart),其中一些值得关注,因为它们链接到许多其他主题,这些主题可能位于不同的信息领域。例如,爱情、贫穷、骑士等抽象主题就没有太多关联点,但它们通常显示为图书主题、诗歌主题、电影主题等,从而让它们更加突出。
类型和属性
您可以从多个不同的视角查看任何给定主题,例如:
- Bob Dylan 是一位歌曲作曲家、歌手、表演者、图书作者和电影演员;
- 莱昂纳多·达芬奇是一位画家、雕塑家、解剖师、建筑师、工程师...
- 爱情可以是图书主题、电影主题、播放主题、诗歌主题等;
- 任何城市都是一个地点,可能是旅游目的地,也是公务员的雇主。
为了捕捉许多主题的这种多面性质,我们在 Freebase 中引入了类型概念。Freebase 中的主题可以分配到任意数量的类型。针对 Bob Dylan 的主题指明了多种类型:歌曲作者类型、音乐作曲家类型、音乐人(歌手)类型、图书作者类型等。每种类型包含一组不同的属性。例如,cHTML(适用于特定类型的移动设备)和HTML(通常用于台式计算机)的内容类型皆为
- 音乐人类型包含有一项属性,列出鲍勃·迪伦制作的所有专辑,以及他已知会演奏的所有乐器;
- 图书作者类型包含一个属性,列出了鲍勃·迪伦撰写或编辑的所有图书,以及他的写作思想或运动;
- 公司类型包含很多用于列出公司创始人、董事会成员、母公司、部门、员工、产品、年收入和利润记录等方面的资源。
因此,类型可以理解为描述信息特定方面最常需要的属性的概念容器。(您可以认为某个类型类似于关系表,并且每个“类型”表具有指向该“身份”表的外键,该表可唯一定义每个主题。)
网域和 ID
就像属性会按类型分组一样,类型本身也会分为网域。网域可以是您喜爱的报纸版块,如商业、生活方式、艺术与娱乐、政治、经济等部门。每个网域都对应一个 ID(标识符),例如
网域的 ID 看起来就像一个文件路径或一个网址路径。
每种类型都被赋予了一个 ID,其 ID 基于其所属的域。例如,公司类型属于公司网域,其 ID 为 /business/company
。下面是其他一些示例:
/music/album
是属于音乐域名的(音乐)专辑类型的 ID/film/actor
- 电影领域的演员类型/medicine/disease
- 医学网域中的疾病类型
就像类型从其网域继承其 ID 的开头一样,属性也会从其所属的类型继承其 ID 的开头。例如,公司类型的行业属性(用于指定公司属于哪个行业)的 ID 为 /business/company/industry
。下面是其他一些示例:
/automotive/engine/horsepower
是(汽车)引擎类型的马力属性的 ID/astronomy/star/planet_s
是 Star 类型的 Planet 属性的 ID(用于列出恒星周围的行星)/language/human_language/writing_system
是人力语言类型的书写系统属性的 ID
因此,即使类型不会排列在 Freebase 中的层次结构中,从概念上讲,网域、类型和属性是以类似文件目录的层次结构形式排列的。
复合值类型
复合值类型是 Freebase 中的类型,用于表示每个条目包含多个字段的数据。Freebase 中使用复合值类型 (CVT) 来表示复杂数据。一开始,这可能有点令人困惑,但 CVT 是 Freebase 架构中非常重要的组成部分,可让 CVT 更准确地描述主题之间的复杂关系。
请思考以下示例:城市的人口数据会随着时间推移而发生变化。这意味着,每次您在 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(例如/business/company
)。
与网域和类型相对应的命名空间旁边有几种命名空间。最重要且最常遇到的就是 /en
命名空间。这是英语命名空间,其中大多数已知主题都可以给出唯一的键,以形成直观易懂的英语 ID。例如,多产的 Bob Dylan 非常知名,他在 Freebase 中的主题被授予 /en
命名空间中的键 bob_dylan
,因此主题的 ID 为 /en/bob_dylan
。此 ID 可让您通过简易网址在 Web 客户端中访问其主题
详细了解媒体资源
我们讨论的最后一个基本概念涉及到 Freebase 属性与关系型数据库技术(即关系型表列)之间的相似性。对于每一行,关系型表格列只能包含一个值。例如,假设有一个典型的“book”关系表,其中有一个名为“author”的列。对于“book”表中的每一行,“author”列只能将一个外键用于存储“author”表。如果某本图书恰好有多位作者,那么这个简单的关系架构设计将不起作用,我们将必须创建一个新表来为作者建模。也就是说,我们需要一个“图书”表、一个“作者”表和一个“作者”表,用于存储图书和作者之间的 n-n 关系。当您从一个架构设计切换到另一个架构设计时,检索数据的方式会发生根本性变化。
与传统的数据库技术不同,Freebase 认为多值属性在建模真实数据时非常受欢迎,因此默认情况下支持多值属性。也就是说,在创建 /book/written_work/author
属性时,系统会假定每本图书允许多位作者,并且您可以采用同样的方式查询多值属性和单值属性。如果您需要联接第三个模型以模拟 n-n 关系,无需考虑。
总结
- 类型是描述相关主题的某一方面通常所需的相关属性的概念容器。
- 您可以为一个主题分配一种或多种类型(默认类型为
/common/topic
) - 属性分为类型,类型分为网域。
- 在命名空间/键层次结构中为网域、类型和资源指定 ID。
- 常见的主题均为
/en
命名空间中的 ID,这些 ID 是直观易懂的英语字符串。 - 主题在 Gbase 中由 GUID 唯一标识。
- 默认情况下,属性是多值属性,可多方式查询多值属性和单值属性。