首页 平台概览 本体论深度解析

本体论深度解析

深度剖析 Palantir Ontology 的工程化定义、数据结构、后端架构与建模哲学

工程化定义

Palantir Ontology 是一种声明式、平台化、可执行的业务运行模型,用于统一表达四个维度:

一句话概括:Ontology 是一个可执行的现实模型——让人和 AI 在同一个语义层里读、想、做。

三个常见误读

不少从业者一听到"本体"就把它等同于自己熟悉的技术。这些误读会严重阻碍对 Ontology 真正价值的理解。

误读一:Ontology ≈ 图数据库

维度Ontology图数据库(Neo4j 等)
底层存储数据湖(Iceberg/Parquet 列存)原生图存储
关系表达逻辑层语义结构物理节点和边
可扩展性关系库+列存+数据湖+图库组合限于图模型

误读二:Ontology ≈ 领域驱动设计(DDD)

DDD 概念Ontology 概念关键差异
实体/聚合根ObjectTypeOntology 的对象不含方法,Action 独立声明
实体间关系LinkType关系是一等公民,自带属性和权限
应用服务/命令入口ActionType带参数、规则、权限、审计的结构化契约
领域服务Function平台级可复用函数,非某应用进程私有

误读三:Ontology ≈ 知识图谱

维度知识图谱Palantir Ontology
核心范式三元组 + 推理(RDF/OWL/SPARQL)对象 + 链接 + 行为 + 权限 + 运行时
核心目标回答问题把数据与行为写回现实
操作能力查询与推理读写操作 + 审计 + 权限

知识图谱让你"知道得更多",Ontology 让你"做得更对"。

三层数据建模演进

工程界对"如何组织企业数据"的认知,经历了三层叠加演进:

层级本体观技术代表核心能力典型短板
L1对象中心ER模型/关系库/OOP描述实体、字段、属性关系语义弱,行为散落应用层
L2对象+关系Graph/Knowledge Graph表达复杂关系和路径偏静态,缺动作与权限运行时
L3关系+行为+约束Palantir Ontology对象、关系、动作、权限、审计平台依赖度高、迁移成本高

三层是叠加关系而非替代关系:L3 仍依赖 L1 的关系数据底座和 L2 的图查询能力。关键差异在于多了一个维度——把"业务该如何运行"也作为一等公民写进数据结构。

核心数据结构

ObjectType:带语义的对象声明

ObjectType: Vehicle(车辆)
  ├── id: string (主键, searchable)
  ├── model: string
  ├── status: enum[PLANNED, IN_PRODUCTION, DONE]
  ├── plant: PlantCode (值类型, 约束为已注册工厂代码)
  ├── vin: string (格式约束: vin-17)
  ├── scheduledStartAt: timestamp
  └── exteriorPhoto: mediaReference (图像/视频)

与传统建表语句的关键差异:语义注释成为一等公民,枚举驱动 UI 自动生成下拉框和 API 校验,值类型自带验证规则,媒资原生支持,索引通过 searchable 标记自动维护。

LinkType:让关系成为一等公民

LinkType: REQUIRES_PART
  ├── from: Vehicle → to: Part
  ├── cardinality: many-to-many
  └── properties:
      ├── mandatory: boolean (是否必装)
      ├── quantity: integer (数量)
      ├── substitute: Part[] (可替代零件)
      ├── validFrom: timestamp
      └── validUntil: timestamp

三个根本变化:关系本身是命名的(Named Relation),有业务含义;关系自带属性,UI/API/Agent 读到的不是裸 ID;关系参与权限和审计,可为每条 LinkType 单独配置权限。

ActionType:可执行的行为契约

ActionType: startProduction
  ├── parameters: { vehicle: Vehicle }
  ├── validation:
  │   ├── allPartsInStock(vehicle) → "Missing parts"
  │   └── hasAvailableLine(vehicle.plant) → "No available line"
  ├── rules:
  │   ├── modifyObject: vehicle.status = "IN_PRODUCTION"
  │   ├── createLink: ASSIGNED_TO(vehicle → line)
  │   └── emitEvent: PRODUCTION_STARTED
  ├── permissions: { roles: [PlantManager, LineSupervisor] }
  └── audit: true

ActionType 将传统 Service 层代码中混杂的权限校验、前置条件、副作用编排、审计日志、通知——六大职责——拆分为声明式契约,让所有消费方(Workshop/OSDK/API/AIP Agent)共用同一份行为定义

Function:复杂逻辑的代码容器

声明式表达不了所有逻辑——库存校验、产线调度、风险评分——这些天然适合用代码写。Function 挂在 Ontology 平台里运行,可被多个 Action、UI、Agent 调用,也可接入外部系统。一句话:ActionType 管"契约和合法性",Function 管"怎么算出来"。

ValueType:随数据流动的约束

ValueType 不是基础数据类型,而是一种语义类型。例如 PlantCode 声明基础类型为 string,并附带正则约束和注册表验证。任何字段标注该 ValueType 后自动获得输入校验、跨对象一致性和 UI 自动标签,无需在每个使用点重复编写验证逻辑。

后端架构

OMS元数据中枢
OSv2对象存储
Funnel索引同步
OSS集合查询
Action Service写回中枢
Functions逻辑容器
Audit Log审计
服务角色主要职责
OMS元数据中枢存储类型定义,版本化,提供类型契约查询
OSv2对象存储存储对象与链接数据,强制写路径走 Action Service
Funnel索引同步数据湖批量数据物化到 OSv2,维护检索索引
OSS集合查询ObjectSet 抽象:过滤、排序、翻页、跨类型遍历
Action Service写回中枢解析 ActionType,校验权限/参数,原子执行 rules
Functions逻辑容器复杂业务逻辑,外部 API/Webhook 调用
Audit Log审计不可篡改的写入记录,与 Action 同事务发生

写路径完整时序

一个 Action 调用经过四个阶段,确保一致性、安全性和可追溯性:

阶段一:契约获取

客户端提交(ActionType, params, identity)→ Action Service 从 OMS 取对应契约。

阶段二:前置校验

参数类型校验 × 权限校验(Role × Classification × Purpose 三维)× 业务前置条件。全部通过才进入写阶段,任何失败直接中止,不产生脏状态。

阶段三:原子写入与索引同步

按 rules 声明顺序原子提交到 OSv2 → Funnel 异步同步索引到 OSS(最终一致)。

阶段四:审计与对外回写

审计日志(与 OSv2 写入同事务)→ Webhook/外部函数调用 → 返回客户端。

关键工程结论:所有写都经 Action 路径,OSv2 不接受绕过 Action 直改对象。校验一次性发生在写之前。审计同事务——"改成功但审计漏了"不存在。对外回写在审计之后——内部先稳定留痕,再触碰外部世界。

本体论建模原则

  1. 只对业务实体建模——指标(如库存周转率)是 Function 属性,不是独立 ObjectType
  2. 先声明,后实现——能用声明式表达的就别写代码
  3. 关系是一等公民——每个 LinkType 都有明确的业务语义
  4. 行为是平台级契约——ActionType 被所有客户端共用,业务规则不再分散
  5. 权限和审计贯穿始终——从建模阶段就内建,而非事后补救
← 上一篇: 平台概览 下一篇: 数字孪生 →
← 平台概览 下一篇: 数字孪生体系 →