循序渐进 · 教学 · 对象类型

对象类型(Object Type)入门

本体(Ontology)里最核心的一个词就是"对象类型"。这一篇用最生活化的例子,带你看懂它是什么、和数据集有什么关系,以及怎样把一堆数据行整理成清晰的对象类型。

原文 Object types · Overview 预计阅读 9 分钟 互动演示 + 6 道测验
本文来源 · Source 内容整理自 Palantir Foundry 官方文档:
https://www.palantir.com/docs/foundry/object-link-types/object-types-overview/
原始标题:Object types · Overview

一句话速览

对象类型(Object Type)入门:本体(Ontology)里最核心的一个词就是"对象类型"。这一篇用最生活化的例子,带你看懂它是什么、和数据集有什么关系,以及怎样把一堆数据行整理成清晰的对象类型。

1 对象类型就是现实事物的"模板"
在 Palantir Foundry 的本体里,对象类型(object type)是一个"真实世界实体或事件"的结构定义
2 三层类比
本体里的概念,和数据集的结构几乎一一对应
3 员工(Employee)与航班(Flight)
官方文档给了两个最经典的例子,我们用它们贯穿全篇
4 一个对象类型由哪些部件构成
一个可用的对象类型,通常包含以下部件
1

一句话说清:对象类型就是现实事物的"模板"

先记住一个定义,后面所有例子都围绕它展开。

在 Palantir Foundry 的本体里,对象类型(object type)是一个"真实世界实体或事件"的结构定义。它规定了"这一类东西"长什么样、有哪些特征,但不关心具体是哪一个。

An object type is the schema definition of a real-world entity or event.对象类型,是对一个真实世界实体或事件的结构(schema)定义。

打个比方:Employee(员工)这个对象类型,定义了"所有员工"长什么样;而"Melissa Chang""Akriti Patel"这些人,就是 Employee对象实例(object / object instance)——也就是这个模板下具体的某一个。

提示:"对象类型"谈的是规则(schema),"对象实例"谈的是具体的一条数据。两者不要混淆,这是后面所有概念的地基。
2

它和数据集是同一套思维:三层类比

如果你熟悉表格(数据集),本体只是换了个名字。

本体里的概念,和数据集的结构几乎一一对应。理解这张表,你就理解了一半的本体:

本体概念数据集里的对应物一句话解释
对象类型 object type整张表的 schema(结构)"所有员工"这一类事物的定义
对象 object表中的一行 row某一个具体员工,如 Melissa Chang
对象集 object set筛选后的一组行"所有资深员工"这样的一批对象

点开下面三层,看看它们各自的角色:

层 1对象类型 Object Type
定义"这一类事物"的规则
例如 Employee 对象类型,规定了员工要有工号、入职日期、岗位等特征。它对应的是整张员工表的 schema,本身不包含任何具体的人。
层 2对象 Object
模板下的一个具体实例
例如对象 "Melissa Chang",工号 11502、2016-10-09 入职、岗位 software engineer。它对应的是表中的一行。
层 3对象集 Object Set
一批对象组成的集合
例如"所有资深员工""所有已到达的航班"。它对应的是按条件筛选后的一组行,可以再拿去做统计、展示或下钻。
关键点:对象集不是新类型,它只是"满足某些条件的对象们",常用于看板、筛选和下钻分析。
3

真实例子:员工(Employee)与航班(Flight)

同一个套路,套到不同业务上长什么样。

官方文档给了两个最经典的例子,我们用它们贯穿全篇:

Employee 对象类型
代表"公司里的每一位员工"。实例如 Melissa Chang、Akriti Patel、Diego Rodriguez。常见属性:员工工号、入职日期、岗位。
Flight 对象类型
代表"每一次航班"。实例如 JFK→SFO 2021-02-24、TLV→LHR 2020-04-16。常见属性:起飞日期、到达日期、乘客数。

动手练:把这些数据片段,归到正确的对象类型

左边是一些零散的数据片段,右边是两个候选对象类型。点击左边的片段,看它该归到哪一类——也想清楚:它是"类型"还是"实例"还是"属性值"?

这些数据片段
员工工号 11502
来自员工目录的一行
航班 JFK→SFO 2021-02-24
一趟具体的飞行
员工 Melissa Chang
一个具体的人
航班乘客数 150
航班的某个特征
员工入职日 2016-10-09
员工的一个字段
航班 TLV→LHR 2020-04-16
一趟具体的飞行
属于哪个对象类型?
Employee
所有"员工"这种实体
主键:员工工号
Flight
所有"航班"这种实体
主键:航班编号

点击左边任意数据片段,看它该归到哪个对象类型。

想一想:"员工工号"和"员工 Melissa Chang"不一样——前者是属性,后者是对象。把"属性值"误当成"对象类型"是初学者最常犯的错。
4

一个对象类型由哪些部件构成

在 Ontology Manager 里新建对象类型时,你其实在填这几样东西。

一个可用的对象类型,通常包含以下部件:

  • 主键(primary key):唯一标识每个对象的字段,例如员工工号。没有它,系统分不清"哪个是哪个"。
  • 标题(title):在界面上给人看的那行字,例如员工姓名、航班号。可以是一到多个属性拼成。
  • 属性(properties):描述这个实体的各项特征,如入职日期、岗位、乘客数。
  • 图标与颜色:纯展示用,帮助用户在应用里一眼认出这类对象。
  • 背后数据源 / 创建方式:对象从哪来?靠数据集接入,还是靠动作(action)创建。
Objects are created and displayed in user applications by adding backing datasources or configuring actions that create objects of an object type in Ontology Manager.对象通过"添加背后数据源"或"配置能创建该类型对象的动作"来生成并展示。
记住:主键负责"认人",标题负责"好认",属性负责"说清楚",数据源负责"有数据"。
5

它怎么接上真实数据:backing datasource

本体不是空想的数据模型,它必须映射到你公司的真实数据。

Foundry 的本体之所以有用,是因为它把每个本体概念映射到了组织真实的数据库,从而能驱动真实应用。具体到对象类型,有两条路让对象"活"起来:

常见做法
接背后数据源(backing datasource) 把员工目录、企业系统等数据集连到 Employee 对象类型,已有数据自动变成对象。
另一种做法
靠动作(action)创建 如果每个对象都通过用户在应用里新建(如录入一张工单),可以创建不带背后数据源的对象类型,由 action 负责生成对象。
提示:两者并非二选一。很多对象类型既接数据源做初始批量导入,又允许后续用 action 增改。
6

怎样挑一个好的对象类型:粒度与取舍

不是什么都该建模成对象类型,选对"颗粒度"最重要。

建模时最容易走偏。下面几条经验帮你判断"这个东西该不该是一个对象类型":

  • 它得是真实存在的实体或事件。员工、航班、订单、设备——这些是对象类型的好候选。
  • 颗粒度要对。把"一次航班"建为对象,比把"航班表"建为对象更合理;对象应对应能被单独指代、单独操作的那一层。
  • 它要有稳定的主键。能被唯一辨认,才值得成为对象类型。
  • 别把"属性"或"计算结果"当成对象类型。"员工姓名"是属性,"本月销售额"通常是派生值,不应单独成类型。
反例:把"一个 Excel 工作表""一个字段"直接建为对象类型,往往会导致本体混乱、难以复用。先想业务实体,再想技术存储。

一页带走

① 对象类型是模板
它定义"这类事物"的结构,对应数据集的 schema,本身不含具体数据。
② 三层对应
类型↔表结构、对象↔一行、对象集↔筛选后的一组行。
③ 必备部件
主键认人、标题好认、属性说清、数据源提供真实数据。
④ 颗粒度要对
建模真实实体/事件,别把属性或计算结果误当成对象类型。

延伸阅读 · 相关页面

按主题横向跳转,不必顺着目录一篇篇读。

常见问题速答 · FAQ

关于「对象类型(Object Type)入门」,读者最常问的几个问题。

对象类型就是现实事物的"模板"是什么?
在 Palantir Foundry 的本体里,对象类型(object type)是一个"真实世界实体或事件"的结构定义。它规定了"这一类东西"长什么样、有哪些特征,但不关心具体是哪一个。
它和数据集是同一套思维:三层类比是什么?
本体里的概念,和数据集的结构几乎一一对应。理解这张表,你就理解了一半的本体。
怎样挑一个好的对象类型:粒度与取舍是什么?
建模时最容易走偏。下面几条经验帮你判断"这个东西该不该是一个对象类型"。