ONTOLOGY · 信贷业务本体

本体知识库说明书

知识如何分类 · 如何存储 · 如何接到数据 · 如何呈现
本书的用途:这是信贷业务本体知识库的完整说明。第一至四章是架构说明——知识库由哪些构件组成、每个构件是什么、存成什么样、最终呈现为什么;第五章是执行纪律——供 LLM 在处理知识分类时遵照执行:按照该章的判定流程与纪律,对全部业务知识做一轮完整分类,归入本书定义的架构。
理论基础:Palantir 本体论(Ontology)。
本书的边界:平台四层架构中,本书只覆盖本体层(语义定义与登记)及两个伸出去的钩子——接地规范(第三章)与 LLM 分类纪律(第五章);数据加工、应用与自动化、权限治理由协作平台与行方系统承担(见 1.1 架构图)。
2026 年 8 月 · v2(规则并入函数 · 取消例外机制)

目录

第 1 章

架构总览

1.1 理论基础:Palantir 本体论

Palantir Foundry 的 Ontology 是把企业业务世界建成"数字孪生"的方法论:不直接面对成百上千张数据表,而是先用少数几类构建块(Building Blocks)把业务世界描述清楚——对象类型(世界上有什么)、属性(它们处于什么状态)、链接类型(它们如何关联)、动作类型(我们能对它们做什么)、函数(如何从已知算出未知)——再把每个构建块逐一"接地"到真实数据。这样,业务语言和数据语言之间有了一层稳定的语义层:业务同事用业务词汇讨论和沉淀知识,数据自动跟随;数仓改表改字段,只动接地层,知识本身不失效。

从平台整体看,Foundry 的完整技术栈分四层数据层把数据接进来、清洗加工成数据集(银行场景即核心、信贷、征信、押品等源系统与数仓管道);本体层把表变成业务概念——行变对象、列变属性、关联变链接,本书的六构件就活在这一层;应用与自动化层让语义产生行动(操作型应用、分析、事件驱动的自动化、LLM);安全与治理贯穿所有层。本书只覆盖本体层,外加两个伸出去的钩子:向下伸进数据层的接地规范(第三章),向上伸进应用层的 LLM 分类纪律(第五章)。其余的层由协作平台与行方现有系统承担:

平台四层架构与本书边界 应用与自动化层 —— 让语义产生行动 操作型应用(工作台 · 审批 · 处置) 分析(图谱 · 字段库) 自动化(事件驱动) LLM 知识分类(第五章 · 可作系统提示词) 语义供应用与自动化调用 本体层 —— 把表变成业务概念【本书辖区】 产出不是数据,是一套人和机器共用的业务语义 六构件语义定义(第一 · 二章) 关系矩阵与图谱约束(1.2 · 4.2) 知识图谱(第四章 · 实时编译) 函数表 · 动作卡(登记簿,非运行时) 接地:行变对象 · 列变属性 · 关联变链接 数据层 —— 把数据弄进来、弄干净(行方数仓) 源系统(核心 · 信贷 · 征信 · 押品) 管道加工(清洗 · join · 聚合) 接地与字段匹配:grounding · C 词典(第三章 · 二期) 安全与治理 —— 贯穿各层:访问控制 · 审计 · 全链路血缘 实线实色=本书覆盖 虚线淡色=平台 / 行方系统承担,本书不覆盖 安全治理在本书内的落点仅两处:属性敏感轴(2.2)与出处溯源(3.4),其余由平台承担。
平台四层架构与本书边界

1.2 两张总图与关系矩阵

图一 · 本体构件分类——顶部是 DOC 原文档输入层:知识的源头,每条构件的 source 都指向原文档的段落锚,任何知识都可溯源到它来自哪份文件;中部是六类构件与它们的关系(实线=结构与读写,橙虚线=挂载:规则型函数指向宿主);底部虚线框是第二阶段 · 数据字段匹配层二期

本体构件分类 DOC · 原文档 —— 知识的输入源每条构件的 source 都指向 DOC 段落锚:任何一条知识都能溯源到它来自哪份原文件 输入 · 溯源 两端=对象 归并 宿主=某个对象(属性不无主) 作用于 · 产出 写入 写产物(落库) 挂动作 挂属性 挂接口=对全体实现者生效 ③ 链接 · R对象之间的边 ① 对象 · N一切构件的宿主锚点 接口 · IF同形对象的归并 ④ 动作 · A机构侧的受治理操作 ② 属性 · P存着的值 ⑤ 函数 · F计算 / 规则 两类型 橙色虚线=挂载(仅规则型函数):规则永不悬空,宿主只能是已建档的 动作 / 属性 / 函数(计算型) / 接口。 第二阶段 · 数据字段匹配(二期)C · 对照词典属性 ↔ SDK ↔ 数仓列;对象/链接的 grounding 与动作落表同期回填
图一 · 本体构件分类

图二 · 细分构件框架——每类构件的内部细分:

细分构件框架 知识构件 6 类身份 ① 对象类型 有身份标识的存在 · 二分 实体 客户 · 账户 · 商户 · 坐席 含制度物:账单 · 催收案件 事件 支用 · 还款 · 提额申请 含登录 · 定位;征信快照等动作产物(product_of) ② 属性 存着的值 · 五轴标注 来源 事实 | 推断 | 构造 结构 标量 | 枚举 | 结构组 | 集合 写入方 客户|动作|函数|时间驱动 归属 专有 | 共享(进字段库) 敏感 明文 | 脱敏 | 禁展示 ③ 链接类型 对象之间的边 结构 structural · 持有 / 挂靠 派生 derived · 推理器自动算出 因果 causal · 证据性 · 可被推翻 ④ 动作类型 按职能域分类(开放清单)· 六要素 授信审批 核准额度 · 拒绝申请 贷中管理 调额 · 调价 · 受理提额申请 交易管控 冻结 · 解冻 · 支付开关 催收 · 账务 外呼 · 分案 | 记账 · 核销 标记 对客/对内 | 隐式 | 职能域业务可增补 ⑤ 函数 由输入定出输出 · 两类型 计算型 读属性 → 算出值 六型:查询|编辑|流式|模型集成|通知|API 规则型 带 if 的许可判定 宿主:动作|属性|函数(计算)|接口 接口 Interface —— 第 6 类身份:归并机制(审核产物,业务输入不填) 可受理 · 可质押 · 可核销;可作规则宿主,对全体实现者一次生效
图二 · 细分构件框架

构件关系矩阵——任意两类构件之间是什么关系、靠哪个字段落地。读法:先行后列,取右上三角(矩阵对称,左下省略);"无直接关系"也是结论,不许私搭关系。

这张矩阵连同 4.2 的图谱约束,属于框架层约束:管构件之间的结构,由平台校验、违反即数据错误——与函数表里管业务的"规则"是两个层面(四个术语的分工见 1.7)。

对象 N 属性 P 链接 R 动作 A 函数 F 接口 IF
对象 N 对象间不直连——任何对象间关系都必须立一条链接 宿主(host):属性挂在对象名下 两端(from / to):链接两端必须都是对象 作用于 / 产出(target / product ↔ product_of 互指):动作施加于对象,可产出新对象 读 / 产出(inputs / outputs):计算型可读对象、可产出新对象;条件引用(refs):规则型条件可引用对象 实现(implementers):同形对象归并为接口的实现者
属性 P 属性间无直接关系;同口径多宿主经共享池共用正本 语义层无关系(属性不能作链接端点);接地层由外键列支撑链接(关系表 grounding · 二期 写入(side_effects ↔ writer 互指):动作改属性值 读 / 写产物(inputs / outputs ↔ writer);条件引用(refs):规则型的条件读属性(不含宿主);挂载(host):规则型挂属性=取值约束 形状声明(shape):接口要求实现者具备某些属性,值永远在实现者身上
链接 R 链接间无关系 无直接边(本框架链接实例经接地产生;Palantir 支持动作建立/断开链接,暂不引入) 遍历:计算型可沿链接跨对象聚合(如客户在贷总余额,治理阶段登 inputs) 无直接关系
动作 A 动作不直接调用动作,衔接经事件驱动显式串联;唯一性按名称+三要素(执行主体、作用目标、产物)查重 挂载(host ↔ conditions 互指):规则型挂动作=执行前置条件,动作表 conditions 引用其编号;分工(无直接边,经属性中转):计算型出建议值落属性、动作读属性核定落地 签名 / 作用于(shape / target):接口声明动作签名;受理动作可作用于接口(参数化)
函数 F 挂载(host):规则型可挂计算型=输入 / 输出红线;计算型之间无直接边(产物经属性中转) 挂载(host):规则型挂接口=对全体实现者一次生效(批发)
接口 IF 接口间继承 Palantir 支持(extends),本框架暂未引入

1.3 一句话总纲

对象是骨架,属性是状态,动作和函数推动状态变化,规则给变化划界,接口把同形归并。(规则是函数的一个类型,与计算并列,同住一张函数表。)

四个核心判定题贯穿全书:执行主体是谁(机构操作者=动作,客户=事件对象)、改不改状态(改=动作,只出数只判定=函数)、存着的还是算出来的(属性 vs 计算型函数)、带不带 if(规则型函数)。

1.4 工作流程:三段

阶段 做什么
第一阶段 · 知识输入 业务 / 产品 按第五章纪律把业务知识写成六类构件,登入第二章的各张登记表。此阶段不接触数据字段
第二阶段 · 数据字段匹配 数据团队 把知识钉到真实数仓:回填各表的 grounding、建对照词典、逐级核实。本书表格中标 二期 的字段即此阶段填写和确认

后续 · 衍生与治理(本说明暂不涉及):两个阶段完成后,在原始字段之上做衍生(衍生指标、衍生模型)时再引入的内容——关系真理强度标定(derived / causal)、计算型函数的完整治理(细分六型、输入清单、版本与边界红线)、接口归并等。

1.5 总览导航表

构件 ID 前缀 存储表 第一阶段填什么 二期及后续
对象 N 对象表 objects.yaml 定义 + 实体/事件二分 grounding 回填二期
属性 P 属性表 attributes.yaml(+取值字典 states.yaml) 宿主 + 五轴判定 writer 补齐、crosswalk二期
链接 R 关系表 relations.yaml 两端 + 基数 grounding二期;kind 标定(衍生阶段,暂不涉及)
动作 A 动作表 actions.yaml(一条记录=一张动作卡) 整卡填齐 仅 grounding二期
函数 F 函数表 functions.yaml 计算型只立壳(编号+名+产物);规则型填齐(语句+宿主) 计算型的细分 / 输入 / 版本(数据应用治理阶段);规则挂接口归并(后续归并)
接口 IF 接口表 interfaces.yaml 不填 后续归并产生

辅助登记(服务知识、本身不是知识):C 对照词典(属性↔数仓列,二期)、DOC 文档登记(出处锚,第一阶段起用)、S 切片(工作分区)、X 冲突登记、G 缺口清单。区分判据:删掉它,对世界的描述会不会少一块——会=构件,不会=辅助。

1.6 三条全表通用约定

  1. 引用一律用 ID:宿主、写入方、两端等跨表引用一律填构件 ID(如 host: A-042),不填名字——改名不断链。给人读的文档处采用"名字(ID)"双写。
  2. 双名:每张表都有 zh(中文名)与 en(英文名);规则型函数的 en 填语句短名(如 accept-within-24h)。
  3. 三态填写:有值=知道;none=确认无/不适用(合法记录,本身是知识);留白=尚未梳理(缺口,审核打回)。"必填"的含义是必须表态:不许沉默,允许说没有。

1.7 常用术语速查

本书反复出现的几个词,先在这里说清楚:

术语 英文 白话解释
构件 Building Block 描述业务世界的六类基本单元:对象、属性、链接、动作、函数、接口。Palantir 称之为构建块。
宿主 host 一条知识挂靠的上级构件,回答"这条知识是关于谁的"。属性的宿主是它描述的那个对象;规则的宿主是它约束的那个构件。
挂载 attach 规则与宿主之间的关系。规则不能独立存在,必须挂在某个构件上,并在那个构件被使用的时刻接受检查——挂在动作上就在动作执行前查,挂在属性上就在值写入时查。
机构操作者 operator Palantir 术语:机构内有权执行动作的人员或系统(坐席、审批员、策略引擎)。动作采集的输入只来自机构操作者;客户不是操作者,客户的行为以"事件"对象被记录。
职能域 functional domain 动作的分类轴:执行主体隶属的业务职能(审批 · 贷中管理 · 管控 · 催收 · 账务…)。"一个执行主体一张卡"保证每张卡唯一归属;清单从操作清单归纳,开放增补。
接口 Interface Palantir 术语:描述对象类型形状与能力的抽象类型——不背数据、不可实例化,对象类型"实现"接口即保证符合其形状。本书用它做同形归并。与 API / SDK 接口无关,后者一律写作"API""SDK 字段"。
实现者 implementer 实现某接口的对象——登记在接口的 implementers 清单里,登记时机器校验其确实具备接口声明的形状。
归并 consolidation 把多个形状相同的对象抽象成一个接口,使规则"一条管一族",不必逐个对象抄写。
计算型 / 规则型 computation / rule (ftype) 函数的两个类型:计算型读属性、算出值;规则型给出许可判定、必须声明宿主。同住函数表,靠 ftype 字段区分。
规则 rule 本书中专指函数表里 ftype=规则 的业务条目(如"还款状态正常才收单")——管业务世界允许不允许。不用于框架自身:框架层的要求叫约束或建模原则。
约束 constraint 框架层的结构要求——链接两端必须是对象、宿主必填、矩阵之外不许私搭关系。机器可校验,违反即数据错误。对应 Palantir 的模式级校验(链接基数、主键必填、属性类型);注意 submission criteria 是业务条件,归本书的"规则"(2.5)。
建模原则 best practice "建模"=把业务知识整理成本体构件这件事;原则是做这件事的指引——拆并口诀、特例写法、边带属性应升格对象。对谁都生效:业务同事手工登记、LLM 按第五章批量分类,遵循的是同一套;因机器拦不住,最终靠审核把关。对应 Palantir 的 Ontology design best practices。
共享池 shared property pool 跨对象同口径属性的正本库——物理上就是属性表中 ownership=共享 的条目,口径写一遍管一族。对应 Palantir 的 Shared Properties。
口径 caliber 一个值的精确算法与含义边界——含不含税、按哪个时点取数、四舍五入到哪一位。同名不同口径,是数据对不上的最常见原因。
接地 grounding 把纸面上的知识与数仓里的真实表、真实列钉在一起。接了地的知识才能用数据验证;没接地的知识只是文字。
出处锚 source anchor 指向原文档具体段落的定位串(如 DOC-2026-031#p5),保证每条知识都能一键回到它出自的原文。
发号 ID issuance 构件编号由平台统一发放、终身不回收,保证所有 ID 引用永不断链。
stub 只登记编号、名称与产物的最小条目。先占个位,让别处的引用有合法指向,细节留到后续阶段补齐。
骨架卡 skeleton card 动作卡的壳:六要素暂空的卡,盘点时批量生成、随后补齐。
六要素 / 三要素 six / three essentials 动作卡的六要素=executor · target · product · params · side_effects · reversibility;三要素=其中的 执行主体 · 作用目标 · 产物,与名称一起作唯一性查重。
产物 product 动作造出的新对象(受理→结论、查征信→快照)。动作卡 product 与该对象的 product_of 互指;客户自己做出的事件不填 product_of。
门类 gate 挂在动作上的规则的检查类别:状态门 / 客群门 / 开关门 / 位段门——登记在函数表,动作卡渲染条件时用。
条件引用 refs 一条规则的条件里读到的其余构件 ID(不含宿主)——用于反查"改这条属性口径波及哪些规则"。
切片 slice 工作分区——按业务线(如额度成长)划分的整理与审核单元,S 号登记。
缺口 gap 尚未梳理的空白——留白字段、缺宿主、缺出处都算。登 G 缺口清单,审核打回补齐;与 none(确认无)严格区分。
冲突登记 conflict log 两条知识矛盾时的处理方式:只登记、不裁决、不静默覆盖,X 号登记交人裁决。规则条件范围重叠且结论不同,同样按此处理。

1.8 建模守则与核心原则(源自 Palantir Best Practices)

以下守则与原则取自 Palantir 官方的 Ontology design best practices,是生成语义层内容时要遵守的规矩——即把业务知识整理成对象、属性、链接、动作、函数、接口这六类构件的时候(无论是业务同事手工登记,还是 LLM 按第五章批量分类),都按这些守则做。它们属于 1.7 定义的建模原则层:靠人判断与审核执行,机器拦不住。每条标注它在本书的落点:已内建的照做即可,标"新增纪律"的是本节新立的要求。

七条设计守则:

守则 含义 在本书的落点
建模现实,不建模系统 对象代表真实世界的实体,不是某个源系统或部门的表示法 2.1"身份标识揭示对象、别被表名迷惑"
有意识地取舍属性 每条属性都应有明确的业务或技术价值,不照搬源表的列 2.2 definition 必填;"快照日期是数据机制元数据,不是业务属性"(5.1 P4)
跨团队协作设计 本体设计拉上多部门干系人 status=verified 要求三方对齐;S 切片分区;X 冲突登记
一个对象只代表一样东西 每个对象类型只对应一种现实存在,不把几样东西揉进一个对象——例:不要建一个"客户账户"对象把人和账户混在一起,人是客户(mpc_uid 标识)、账户是贷款账户(acct_no 标识),两个标识就是两个对象,用链接相连。反面是**"上帝对象"**:一个对象为每个新场景不断加字段,最后什么都装 2.1 标识语义示例(mpc_uid vs acct_no)。高危预警:客户、贷款账户是最容易被堆属性的对象——新场景要加的东西,先问"这是客户本身的属性,还是另一样东西的属性";是后者就立新对象用链接挂上,不给核心对象增肥
选对工具 人或智能体的决策用动作,自动化的数据加工用管道 2.4 执行主体判定;2.5"writer=F 对应管道产出"防误读段
共性归接口,不造大对象 几种对象有一批共同的属性和动作时(提额申请、分期申请、提现申请都有提交时间、受理状态、受理动作),不要把它们合成一个"申请"大对象再用一堆字段区分类型——那样每种申请的专有字段对别的申请都是空的,对象"又宽又稀疏";而是各自保持独立对象,把共同的那部分抽成一个接口(可受理),让它们各自实现 2.6 接口定义与 Facility 例子;归并判据:三个以上对象同形才归并;规则挂接口一条管一族
记录决策 对象、属性、链接的设计决定要写下来 每条知识带出处锚+asOf/by;平台审计日志

四条核心原则:

原则 含义 在本书的落点
领域驱动 "本体建模的是真实世界,不是源数据"——抵制列→属性的直接映射 1.4 第一阶段不接触数据字段:纸面知识先行,二期才接地——整个两段式流程就是这条原则的制度化
三次法则 同一个东西建了三次,就该重构归并;每个概念只留一个正本 共享池(口径正本只登一份);接口归并判据;函数表是规则的唯一全集
对扩展开放、对修改封闭 保护核心模型,让建设者在其上扩展 新增纪律:对象定义升到 verified 后即为定稿——新场景通过新链接、新属性、新接口在其上扩展,不回改已定稿的定义;确需改定义的,走冲突登记交审核裁决
组合优于深继承 多接口组合能力,不搞深层继承链 一个对象可实现多个接口;接口间继承暂未引入(见 1.2 矩阵接口×接口格)
第 2 章

构件详解

本章逐一说明六类构件。每节的结构:局部关联图 → 定义与判定 → 细分类别 → 相连关系 → 存储表(字段词典+样例)。局部关联图中的编号 ❶❷❸… 与"相连关系"表的行号一一对应——看图找线,对号读表。

2.1 对象(N · 紫色)

对象与其相连构件 ❶ 两端都是对象 对象之间不直连,关系必经链接 ❹ 实现接口 接口只声明形状,值在对象上 ❺ 读 · 产出 对象可作输入或输出 ❷ 宿主 属性描述某个对象的状态,不无主 ❸ 作用于 施加于对象、改其状态 ❸ 产出新对象 重组→新借据、查征信→快照 链接 · R对象之间的边 接口 · IF同形对象的归并 函数 · F计算型 属性 · P存着的值 动作 · A机构侧的受治理操作 对象 · N 有身份标识的实体或事件 类型≈一张表,实例≈一行 实体 | 事件 ❻ 接地(第二阶段) 对象钉到数仓的主档表与身份列;没有主档表的对象(如商户)标记后登缺口——由数据团队回填
对象与其相连构件

定义与判定

按 Palantir 的定义,对象类型是真实世界中某一类实体或事件的模式定义("the schema definition of a real-world entity or event");对象是对象类型的一个实例,对应一个具体的真实世界实体或事件。官方给的类比最直观:对象类型相当于一张数据集,对象相当于其中的一行——"客户"是对象类型,某一位具体客户是一个对象;"支用事件"是对象类型,某一笔具体支用是一个对象。

由此推出对象的两个特征:每个实例有唯一身份标识(Palantir 中即主键属性,我们登记为 identity 列),因此能被逐个指认、清点数量;每个实例有自己的生命周期,产生、变化、终止都可追踪。判定时问一句:它能不能落成"一行"——有没有一个标识把这一个和那一个分开?"支用事件"能,一笔一行,是对象;"风险"不能,它是程度描述,落不成行,不是对象。

来自数据侧的辅助判据:身份标识列揭示对象。数据里每出现一种起标识作用的列(ref_nbr、merchantName、agentcode),背后就站着一个对象类型。判断对象看标识,不要被表名迷惑。

对象是一切构件的宿主锚点:属性描述对象、链接连接对象、动作作用于对象、函数读写对象的属性、规则经它们间接挂到对象。

细分类别(二分,即 type 字段的取值——沿用 Palantir 的实体 / 事件)

Palantir 对对象类型的定义是"真实世界实体或事件的模式定义",本书沿用这一刀,不再细分:

type 本质 例子 关键特征
实体 独立存在的主体,跨事件持续 客户、贷款账户、商户、坐席;账单、催收案件(机构流程造出的制度物,同样是实体) 生命周期长,状态可被反复改写
事件 某一时刻发生的一次记录 支用、还款、提额申请;登录足迹、设备定位、征信快照 一次发生一条,只追加不改写

最重要的分界:客户发起的行为(支用/还款/申请)归"事件"——动作类型只收录机构侧的操作。Palantir 原文对此的支撑:对象类型是 "schema definition of a real-world entity or event",且官方例子直接列出 "customer orders or financial transactions"——客户做的事在官方口径里就是对象;而动作类型 "capture data from operators in your organization",客户不在其列(三段原文与推理见 2.4)。

动作产物标记(product_of,机器推导):有一类对象不是客户做出来的,而是机构动作留下的产物——机构查征信是一个动作(A 号),返回并留存的征信快照就是这个动作的产物;外呼是动作,通话记录是产物;受理支付是动作,借据是产物。产物对象不限二分:事件(征信快照、通话记录)和实体(借据、账户、券)都可以是动作的产物;多个动作产同一类对象时 product_of 多值(借据←受理支付/放款/重组/转分期)。产物对象在 product_of 字段写产出它的动作号,与动作卡的 product 字段互指(同一条边的两个视角,如同 writer ↔ side_effects)。判据不靠人猜"谁触发":出现在某张动作卡 product 里的对象,就是它的产物——机器可推导、可校验。客户自己做出的事件(支用、还款、申请、登录、定位)没有 product_of,是常态。

这是 2.4"观测与干预分离"红线在对象侧的落点,审查义务只落在事件对象上:product_of 非空的事件是机构干预留下的痕迹,进模型特征前须显式审查,否则模型学到的是"机构何时出手"而不是客户风险。实体的 product_of 只是来源溯源(记录哪个动作造出它),不带审查义务。(本段口径由 X-046 收口:原「事件专用」放宽为实体、事件都可填。)

相连关系(对应图中编号)

图中线 方向 含义
❶ 两端=对象 链接 ↔ 对象 链接的两端必须都是对象
❷ 宿主 属性 → 对象 每条属性必须挂在一个对象名下
❸ 作用于 · 产出 动作 → 对象 动作施加于对象;有的动作产出新对象(分案→案件、重组→新借据、查征信→征信快照)——产物对象的 product_of 与动作卡的 product 互指
❹ 实现接口 接口 ⇢ 对象 同形对象归并为接口的实现者;接口只声明形状,值永远在对象上
❺ 读 · 产出 函数 ↔ 对象 计算型函数可以对象为输入,也可产出对象集
❻ 接地二期 对象 → 数仓 对象钉到数仓的主档表与身份列(类型≈表、实例≈行);无主档表的标记后登缺口——字段见下文 grounding 子字段表

标识语义示例(易错点):mpc_uid 标识的是客户(人),acct_no 标识的是贷款账户——两个标识符就是两个对象;记录它们对应关系的映射表,是"客户-持有→贷款账户"这条链接的实例清单。用 acct_no 的表记录的是账户的事,用 mpc_uid 的表记录的是人的事——属性归宿主时按此判断。

存储表:对象表 objects.yaml

字段 含义 取值/格式
id 对象编号,终身不回收 N + 三位序号(发号器发放)
zh / en 中文名 / 英文名 文本
type 二分 实体 | 事件
product_of 是哪个动作的产物(实体、事件都可填) A 号,可多值(· 分隔),与该动作卡的 product 互指;客户自己做出的事件为空
definition 业务定义(人话) 文本
grounding 对象接地:实例住在哪张表。第一阶段留空 见下表 · 二期
source 出处 DOC-ID#pN 锚(可命中原文)或手填文本
status 本条登记的核实进度 draft(草稿)| verified(三方对齐已核实)
asOf / by 当前状态定格日 / 经手负责人 日期 / 人名

grounding 子字段(二期数据团队回填):

四个子字段各回答一个问题(沿用"对象类型≈一张表、对象≈一行"的类比):

子字段 回答的问题 例子与判据
dw_table 实例住在哪张表?——对象的主档表,一个对象类型只认一张 客户 → mpc_user_profile,贷款账户 → icpmms_cust_info。判据:这张表里身份列不重复且覆盖全体实例。身份列在别的表里作外键出现的(订单表里的 acct_no),不算主档,归各条链接的 grounding
identity 哪一列是身份?——让每一行成为"这一个"的列,即 Palantir 的主键属性 客户 → mpc_uid,账户 → acct_no,提额申请 → req_id。"数得清"靠它数:一列一个、绝不重复。用数仓的话说就是业务主键(自然键):有主档表时通常就是那张表的主键;但数仓表未必声明了 PK,identity 认的是"业务上起唯一标识作用的列",不看有没有 PK 约束;no_master 的对象则是从别的表借来当身份用的列(商户的 merchantName 是订单表的普通列)
no_master 有没有真正的主档表?——true=没有,实例是从别人的表里扫出来的 商户:数仓没有"商户表",merchantName 只作为订单表的一列反复出现,只能 DISTINCT 扫出商户清单。这是质量标记:接地是权宜之计,同名异写会被数成两个;同时登缺口清单反馈数据团队补主档
verify 核实到哪一步了? candidate → judged → verified,只许数据角色推进。与条目级 status 相互独立(定义核实了 ≠ 接地核实了)

样例(覆盖实体 / 事件、动作产物与 grounding 三种状态):

- { id: N001, zh: 客户, en: Customer, type: 实体,
    definition: 在体系内开户的个体(人),
    grounding: { dw_table: mpc_user_profile, identity: mpc_uid, verify: verified },
    source: DOC-2026-001#p3, status: verified, asOf: '2026-08-07', by: trista }

- { id: N009, zh: 贷款账户, en: LoanAccount, type: 实体,
    definition: 客户名下的授信账户,额度/管控/账期的宿主,
    grounding: { dw_table: icpmms_cust_info, identity: acct_no, verify: verified },
    status: verified }

- { id: N015, zh: 商户, en: Merchant, type: 实体,
    definition: 消费订单的交易对手方,
    grounding: { dw_table: fact_order, identity: merchantName, no_master: true, verify: judged },
    status: draft }                              # 无主档表:从订单表 DISTINCT 扫出

- { id: N021, zh: 提额申请, en: LimitIncreaseRequest, type: 事件,
    definition: 客户主动发起的提升授信额度请求,一次提交为一个实例,
    grounding: null,                             # 第一阶段留空,二期回填
    source: DOC-2026-031#p4, status: draft, by: leo }

- { id: N025, zh: 登录足迹, en: LoginTrace, type: 事件,                # 客户触发,无需标记
    grounding: { dw_table: fact_login, identity: login_id, verify: judged } }

- { id: N027, zh: 征信快照, en: CreditBureauSnapshot, type: 事件, product_of: A-063,   # 查征信动作的产物
    definition: 机构向征信机构查询后返回并留存的报告快照,
    grounding: null, status: draft }

- { id: N030, zh: 账单, en: Statement, type: 实体,             # 制度物,仍是实体
    definition: 按账期对账户未清项归集生成的应还清单,
    grounding: { dw_table: fact_statement, identity: stmt_id, verify: verified } }

2.2 属性(P · 粉色)

属性与其相连构件 ❶ 宿主 属性≈列,列不能脱离表;宿主须已建档 ❷ 写入 动作改值 · 与副作用互指 ❸ 读 ❹ 写产物 落库后来源=推断 ❺ 挂载=取值约束 值写入或校验时检查(额度不得超过 2000 万) 对象 · N属性描述的"谁" 动作 · A机构侧操作 函数 · F计算型 函数 · F规则型 · 带 if 属性 · P 对象某个特征的值 只存当前值 · 五轴标注 归属=共享:口径正本只登一份,多宿主共用 ❻ 接地(第二阶段) 属性经 C 对照词典钉到数仓的一列(业务名 ↔ SDK 名 ↔ 库.表.列),一条属性可对多列; 词典为空=该属性暂不可用数据验证——由数据团队回填
属性与其相连构件

定义与判定

按 Palantir 的定义,属性是某类实体或事件的一个特征的模式定义("the schema definition of a characteristic of a real-world entity or event");属性值是该属性在某个具体对象上的值。沿用"对象类型≈一张表、对象≈一行"的类比:属性≈这张表的一列,属性值≈这一行在这一列上的取值——"授信额度"是贷款账户表的一列,某个账户的授信额度 500 万是一个属性值。

由此推出属性的两个特征:必有宿主——列不能脱离表存在,属性必须挂在某个对象类型上;只存单值——一个对象在一个属性上只有一个当前值("a conventional object property contains a single value"),历史不塞进属性(见下文约束)。判定时问:"它描述的是什么?"——答不出"谁",说明宿主对象还没建档,先回去立对象。

属性与函数的分界只有一句话:存下来的是属性,算出来的是函数。计算得到的值一旦落库,就取得属性身份、照常登记,只是要在"写入方"字段指回产出它的那个函数——这样任何人看到这个字段,都知道它不是原始事实,而是计算结果。

细分类别(五轴——不是子类,是每条属性同时取值的五个维度)

取值 为什么要标
origin 来源 事实 | 推断 | 构造 防泄漏红线的落点:推断类不得作为原始特征回流进模型(与事件对象的 product_of 配合审查)。事实=世界原样记录(还款金额);推断=算出来的(风险分群);构造=制度定义(账单日)
structure 结构 标量 | 枚举 | 结构组 | 集合 枚举须配 enum_ref(取值集进取值字典);结构组=位段编码类整组登记,禁止逐位散登;集合=多值并存
writer 写入方 客户提交 | A-xx | F-xx | 时间驱动 | null 哪个主体有权写入该值——必须指向已建档构件(F 号须为计算型函数);null=写入方未明(缺口),升 verified 前必须补齐
ownership 归属 专有 | 共享 共享=多对象同口径(金额/时间戳),口径正本进共享池,各宿主只写引用——口径写一遍管一族
sensitive 敏感 明文 | 脱敏 | 禁展示 脱敏红线落到字段级,直接回答界面如何处理

结构轴速判(按顺序问,命中即停):

  1. 值内部还分段吗?→ 结构组
  2. 能同时有多个值吗?→ 集合
  3. 取值是有限清单吗?→ 枚举
  4. 都不是 → 标量

枚举:什么算枚举

例子 能否列完 结论
受理状态:待受理 / 已受理 / 已拒绝 枚举
交易金额 不能 标量

共享池:口径正本库

要点 说明
解决什么问题 同一口径的属性出现在多个对象上(支用、还款、订单都有"金额"),各自登记会被抄写多遍并逐渐漂移——有的写含税、有的写不含
做法 口径正本只登一份(host 写成多个宿主对象的列表),各宿主处只引用不复制;修改一处、全体宿主同步生效
它是什么 不是一张新表——物理上就是属性表中 ownership=共享 的那部分条目;平台字段库为它提供检索入口
对应 Palantir Shared Properties

属性只有当前值(约束)

Palantir 原文支撑:属性值是单数——"a property value refers to the value of a property on an object";"a conventional object property contains a single value"。普通属性里没有历史;Palantir 要保留历史时,用的是下面三个机制,没有一个是普通属性

机制 是不是属性? 官方原文 / 特点 承载什么历史 本框架
时序属性 Time Series Property 是一种特殊属性类型,不是普通属性——属性只是句柄,历史存在 Foundry 专门的时序库里 "stores a history of timestamped values" 连续量随时间的变化(余额走势) 不引入:我们没有时序库,接地对象是行方数仓,数仓里的历史本来就是"一日一行 / 一笔一行"的事实表——即事件对象的形态。余额走势建成"日余额快照"事件对象:有身份(账户+日期)、可挂链接、可被规则 refs 引用;塞进属性则三者皆无,且与"只存单值"约束冲突
编辑历史 Edit History 不是属性——是与当前值分开存的审计日志 默认关闭、逐对象类型开启;只记用户经动作做的编辑,不记数据同步 谁在何时把哪个属性从 A 改成 B 平台审计日志
动作日志 Action Log 不是属性——是对象 "models all action submissions as object types" 每次动作提交本身 采用:变化建成事件对象

结论:普通属性只有当前值;要历史,Palantir 三条路都在属性之外——换特殊类型、开审计日志、或建成对象。

完整例子 · 额度四件套

东西 归类 说明
初始额度 属性 写入方=授信审批动作;首次核定后不变——不变的值也是属性
当前额度 属性 写入方=调额动作;每次调额被覆盖
额度调整记录 事件对象 一次一条,带调整前后额度、时间、原因;product_of=调额动作
调额 动作 动作卡填 product=额度调整记录、side_effects=写当前额度,三者关系即齐

要看"额度怎么一步步变到今天":沿"账户→调整记录"链接按时间排,不翻当前额度的历史值。

相连关系(对应图中编号)

图中线 方向 含义
❶ 宿主 属性 → 对象 属性≈列,列不能脱离表;宿主必须是已建档对象
❷ 写入 动作 → 属性 动作改属性值;与该动作卡的 side_effects 互指(同一条边的两个视角)
❸ 读 属性 → 函数(计算型) 函数以它为输入——函数的 inputs 清单就是模型特征表
❹ 写产物 函数(计算型)→ 属性 算出的值落库成属性,写入方指回该函数;来源轴必为"推断"
❺ 挂载=取值约束 函数(规则型)⇢ 属性 值写入或校验时检查(如"授信额度不得超过 2000 万")
❻ 接地二期 属性 → 数仓列 经 C 对照词典钉到 库.表.列,一条属性可对多列;词典为空=暂不可用数据验证

存储表:属性表 attributes.yaml + 取值字典 states.yaml

字段 含义 取值/格式
id / zh / en 编号(P+三位)/ 双名
host 宿主对象 N 号;归属=共享时为 N 号列表
origin / structure / writer / ownership / sensitive 五轴(见上表)
definition 业务口径 文本
enum_ref structure=枚举时必填;=集合时可选(成员字典) states.yaml#锚
sub_fields structure=结构组时必填 位段子字段清单(子字段可自带 enum_ref)
crosswalk 接地词典行 C 号列表 · 二期;空=尚未接地(数据验证判"不可测")
source / status / asOf / by 同对象表

样例(覆盖:事实枚举 / 推断脱敏 / 建议值与核定值对照):

- id: P003
  zh: 受理状态
  en: AcceptStatus
  host: N021
  origin: 事实
  structure: 枚举
  writer: A-042                    # 只有受理动作能写它
  ownership: 共享                   # 各类申请同款口径
  sensitive: 明文
  definition: 申请当前的受理进度
  enum_ref: states.yaml#accept_status
  crosswalk: [C011]                # 【二期】
  source: DOC-2026-031#p4
  status: draft

- id: P002
  zh: 内部行为评分
  en: BehaviorScore
  host: N001
  origin: 推断                      # → 推断值,不得当原始特征回流
  structure: 标量
  writer: F001
  ownership: 专有
  sensitive: 脱敏
  status: draft

# 建议值 vs 核定值——两个属性、两个写入方(见第五章易混边界)
- { id: P004, zh: 建议额度, en: SuggestedLimit, host: N009,
    origin: 推断, writer: F001 }    # 模型吐的建议,版本一换就变
- { id: P010, zh: 初始额度, en: InitialLimit, host: N009,
    origin: 事实, writer: A-001 }   # 审批核定的决策事实,永不再变

取值字典 states.yaml(枚举型属性的取值明细——每个取值本身是一条知识):

- dim: accept_status
  attr: P003                       # 挂回属性
  values:
    - { value: P, zh: 待受理, source: DOC-2026-031#p4 }
    - { value: A, zh: 已受理, source: DOC-2026-031#p4 }
    - { value: R, zh: 已拒绝, source: DOC-2026-031#p4 }

2.3 链接(R · 灰色)

链接与其两端 ❶ 两端都是对象 · 天然双向 一个链接类型两向可遍历,不必"客户→账户""账户→客户"各建一条;两端可为同一对象类型(自连) 对象 · Nfrom 端(客户) 对象 · Nto 端(贷款账户) 链接 · R 两个对象类型间的关系 ≈ 两张表之间的 join 动词命名(持有)· 方向 · 基数 1:1 / 1:N / N:1 / N:M ❷ 遍历 · 聚合 计算型沿边跨对象聚合 函数 · F计算型 kind=真理强度(衍生阶段标定) structural 必然为真 | derived 沿边推出 | causal 可被推翻 ❸ 接地(第二阶段) 链接钉到数仓的外键列(一对一 / 一对多)或映射表(多对多),每一行=一条链接实例,基数由此可验证 属性不作端点,但语义层的边在接地层靠外键列支撑——由数据团队回填
链接与其两端

定义与判定

按 Palantir 的定义,链接类型是两个对象类型之间一种关系的模式定义("the schema definition of a relationship between two object types");链接是这种关系在两个具体对象之间的一个实例。沿用表/行的类比:链接类型≈两张表之间的一个 join(官方原话 "analogous to that of a join between two datasets"),一条链接≈join 结果里的一行——"客户持有贷款账户"是链接类型,某位客户与其名下某个账户的对应关系是一条链接。

由此推出链接的三个特征:两端必须都是对象——join 只能连表,属性、动作、函数都不能作为链接端点(自连也允许:员工↔上级,两端是同一对象类型);天然双向——一个链接类型两个方向都可遍历,不必为"客户→账户"和"账户→客户"各建一条;有基数——一对一、一对多、多对多;多对多的链接由独立的映射表支撑,其他由外键列支撑(这正是二期接地的落点)。判定时问:"它连接的是哪两个对象?"链接用业务动词命名,标明方向与基数。

边不承载属性与历史(建模原则):链接本身不带属性、不带时间区间。当一段关系需要携带金额、时点、状态时,把它升格为对象——客户与商户的"消费"关系带金额,所以订单是对象而不是一条边。判据:想给边加字段的那一刻,就是该立对象的那一刻。

细分类别(kind——真理强度,衍生分析阶段标定,业务输入不填)

kind 含义 谁产生 使用端
structural 结构 定义上必然为真(客户-持有-账户) 业务输入默认值 进 OWL 硬推理,打架即矛盾
derived 派生 沿已有边推出(客户-消费于-商户) 后续归并:只存推导路径,不存实例 查询层现算不存
causal 因果 证据支持、可被推翻(登录骤降→逾期风险升) 数据分析产出自带 随证据更新,不进硬推理

相连关系(对应图中编号)

图中线 方向 含义
❶ 两端都是对象 · 天然双向 对象 ↔ 链接 ↔ 对象 两端必须是已建档对象(可为同一类型,自连);一个链接类型两向可遍历,不必两个方向各建一条;动词命名、标方向与基数
❷ 遍历 · 聚合 函数(计算型)⇢ 链接 计算型可沿链接跨对象聚合(客户在贷总余额);固定且高频的遍历应沉淀为真链接
❸ 接地二期 链接 → 数仓 钉到外键列(一对一 / 一对多)或映射表(多对多);每一行=一条链接实例,基数由此可验证

存储表:关系表 relations.yaml

字段 含义 取值
id / zh / en R+三位 / 双名(动词)
kind 真理强度 structural | derived | causal(默认 structural)
from / to 两端对象 必须 N 号
cardinality 基数 1:1 | 1:N | N:1 | N:M | 1:0..1(N:M 由映射表接地)
grounding 接地 · 二期 { dw_table, columns[], verify }
source / status / asOf / by 同上

样例(映射表接地 / 外键接地各一):

- id: R001
  zh: 持有
  en: holds
  kind: structural
  from: N001                       # 客户(mpc_uid)
  to: N009                         # 贷款账户(acct_no)
  cardinality: '1:1'
  grounding: { dw_table: _cohort_map, columns: [mpc_uid, acct_no], verify: verified }   # 【二期】
  status: verified

- id: R012
  zh: 发生于
  en: occursOn
  kind: structural
  from: N009
  to: N021
  cardinality: '1:N'
  grounding: { dw_table: fact_limit_req, columns: [acct_no], verify: judged }           # 【二期】
  status: draft

2.4 动作(A · 青色)

动作与其相连构件 ❶ 作用于 操作施加于哪个对象(target) ❷ 产出 造出新对象,与其 product_of 互指 ❶ 作用于接口 一张卡管全部申请事件 ❺ 无直接边 建议值经属性中转 ❹ 前置条件 执行那一刻检查,不满足即拦截 ❸ 写入 改属性值,与其 writer 互指 对象 · N作用目标 对象 · N(产物)受理结论 · 新借据 · 快照 函数 · F计算型 接口 · IF声明签名 函数 · F规则型(挂载于动作) 属性 · P副作用写入的值 动作 · A 机构操作者的受治理写操作 ≈带权限的表单+一次写入 参数 · 条件 · 编辑 · 留痕 ❻ 接地(第二阶段) 执行日志钉到数仓表与列(执行者 · 动作码 · 时间 · 结果);无日志的动作登缺口——由数据团队回填
动作与其相连构件

定义与判定

按 Palantir 的定义,动作类型是"用户可以一次采取的一组对象、属性或链接编辑"的模式定义("the definition of a set of changes or edits to objects, properties, or links that a user can take at once");动作是该定义的一次具体执行(一次提交)。它是本体的"动能"(kinetics):在遵守机构管控与治理的前提下让数据发生变化——因此动作采集的是机构操作者(operator,机构内有权执行操作的人员或系统:坐席、审批员、策略引擎)的输入,是机构一侧改变业务状态的唯一受治理入口

类比:动作类型≈一张带权限校验的业务表单+一次事务性写入——表单规定谁能填、填什么、提交前查什么;提交即一次写入,写完留一条日志。"受理提额申请"是动作类型,策略系统在某时刻对某笔申请做出的那一次受理是一个动作。

由此推出动作的五个特征(每一条都对应 Palantir 动作类型的一个组成部分,也对应动作卡上的一处):

特征 Palantir 对应 落到动作卡
有执行者、有权限——谁能做是定义的一部分 permissions("authorized employees … can perform the action") executor · category
有输入参数——每次执行带的变量 parameters params
编辑范围事先声明——改哪个对象、造什么、写哪些属性 rules(create / modify / delete object,add / remove link) target · product · side_effects
提交前有条件——不满足则不得执行 submission criteria conditions(规则型函数挂载,2.5)
执行留痕、可追溯——每次提交是一条记录 action log · edit history reversibility;grounding(接地)

判定时问两个问题:

判定①在 Palantir 原文中的依据(三段定义合起来推出,逐条可引):

官方原文 出处 推出什么
"An object type is the schema definition of a real-world entity or event." 例子明列 "customer orders or financial transactions" Ontology core concepts / overview 客户下单、金融交易这类"客户出手做的事",官方归为对象
action types "enable you to capture data from operators in your organization";kinetics = "enabling change while complying with organizational controls and governance" Ontology overview 动作只采集机构内操作者的输入、在机构治理下改变数据——客户不是 operator
"An action type is the definition of a set of changes or edits ... that a user can take at once." 权限例:"authorized employees ... can perform the action" Action types overview 动作是"用户可采取的编辑",面向将要发生的操作;客户已发生的支用、还款是事实,只能被记录,不能被"采取"。官方文档从未把客户或外部方描述为动作的执行者

三段合起来:客户的行为是真实世界的事件→对象;动作的执行者限定为机构内操作者→客户行为不构成动作;动作是"可采取的编辑"而非"已发生的记录"→形状也对不上。除原文依据外,只收录机构侧操作在业务上还有三条理由:

理由 说明
治理性 只有机构自身的操作可以被规则约束、在执行前被拦截;客户的行为只能被观测,无法被"禁止发生"
观测与干预分离 防止数据泄漏的根基:机构的干预记录(如主动查征信)若混进"客户行为"特征,模型学到的是机构何时干预,而不是客户本身的风险
数据形状不同 机构操作的日志天然带执行者、动作码、执行结果三件套;客户行为的记录只有金额、时间、类型

细分类别(category=职能域:谁的手,就是谁的类)

动作按职能域分类——执行主体隶属的业务职能。纪律"一个执行主体一张卡"保证了每张卡只属于一个职能:分类天然互斥且完备,业务同学判定零成本("这是谁的地盘")。

职能域是开放清单,由业务增补:清单不是本书定死的,而是从各机构的操作清单盘点归纳出来的枚举字典(与 states.yaml 同类维护)。业务同学建卡时找不到合适职能即可新增,审核只做去重归并。下表按信贷生命周期列出常见职能域作为起点,供对照,不是上限:

生命周期 职能域(示例) 动作例子
贷前 获客与营销 投放名单、发放优惠券
贷前 准入与反欺诈 黑名单拦截、人工反欺诈复核
贷前 授信审批 核准额度、拒绝申请、要求补件
贷中 贷中管理 客户额度与价格的调整:调额、受理提额申请(系统执行,策略归此队)、调整利率、给予费率优惠
贷中 交易管控 冻结、解冻、支付开关
贷后 贷后监控 触发预警、下调风险等级
贷后 催收 外呼、分案、记录还款承诺
贷后 账务 记账、核销、自动出账
全程 客服 受理投诉、人工改资料
全程 合规与风控管理 策略上线审批、模型上线审批

增补规矩三条:① 按执行主体归属命名("这个操作是哪个团队 / 哪个系统的职责"),不按动作效果命名("冻结类"不是职能域,冻结属于交易管控);② 新增前先查同义("贷中管理"与"额度管理"取其一);③ 同一执行主体的动作只能落在一个职能域——若一个团队的动作横跨两域,说明域切得不对,交审核归并。

规矩 ③ 的两个例子——催收坐席做外呼、分案、记录还款承诺三件事,若有人把"记录还款承诺"填成"客服",催收坐席就横跨了两域:改回"催收"即可(域看执行者归属,不看动作长相)。若卡上执行者写"风控策略团队",而它既核准额度(授信审批)又调额(贷中管理),有两条修法:把执行者写细——实际执行的是"授信决策引擎"与"额度策略系统"两个系统,各归各域;或承认这两个域在本机构就是同一团队的地盘,合并为一个域。哪条都行,交审核定,但不允许留着"一个执行者、两个域"——那会让下一张卡不知该填哪个域。

其余维度不占分类轴,各归其位:

维度 落点 谁负责
对客 / 对内 facing 可选标记——判据:客户能否感知本次状态变化 人选标
触发方式 implicit 标记——true=系统自动执行、无人点按钮,照样建档 人选标
编辑效果 不设字段:有 product=创建型,仅 side_effects=变更型——平台自动推导(对应 Palantir 的 create / modify object 规则类型) 机器推导
受理模式 不是类别:"一张卡带事件类型参数、管全部申请类事件"的参数化模式,由卡的形状(target=接口+params 含事件类型)识别 机器识别

拆卡与并卡——业务大词先在时间线上走一遍:数几个执行主体、停几站。

判据 拆成多张卡(命中任一即拆) 并成一张卡(命中即并)
执行主体 中途换人 全程同一执行主体
条件检查时点 不同步骤各查各的 同一套条件、一次检查
中间态 中间能停留、可查询 一步到位、无中间态
可逆性 各步撤销方式不同 同一种撤销方式
产物 各步产物不同 同形状 × N——参数化合并,差异进 params

走一遍时间线的例子——业务说"提额审批"。沿时间线数站:客户提交 → 系统受理 → 模型算分 → 审批员核准 → 系统生效写额度。逐条对表:执行主体换了(系统→审批员→系统);条件检查时点不同(受理查"还款正常、开关打开",核准查"模型分≥阈值、不超上限");中间能停(受理后停在"待审",客服可查);撤法不同(受理拒了可重提,额度生效了要走调额回退);产物不同(受理结论 / 审批结论 / 当前额度)。五条全中,拆成三张:受理提额申请(系统)/核准提额(审批员)/调额生效(系统)——每张恰好一个执行主体、一个检查时点、一种撤销方式。反例:受理提额申请 / 受理分期申请 / 受理提现申请,形状完全相同、只差申请类型——"同形状 × N",并成一张卡,事件类型进 params。

口诀:一张卡=一个执行主体+一个检查时点+一种撤销方式。 拆错不要紧,审核会复核。 纪律:一个执行主体一张卡,动作须唯一(审核按名称+三要素——执行主体、作用目标、产物——组合查重)。

相连关系(对应图中编号)

图中线 方向 含义
❶ 作用于 动作 → 对象 / 接口 target:操作施加于谁;受理类动作可作用于接口——一张卡带事件类型参数,管全部申请类事件
❷ 产出 动作 → 对象 product:有的动作造出新对象(受理→结论、外访→还款承诺、重组→新借据);与该对象的 product_of 互指
❸ 写入 动作 → 属性 side_effects:改哪些属性值;与属性的 writer 互指(同一条边的两个视角)
❹ 前置条件 函数(规则型)⇢ 动作 挂载:规则挂动作=执行那一刻的检查;不满足即拦截(卡内 conditions 逐条引用 F 号)
❺ 无直接边(经属性中转) 函数(计算型)⇢ 属性 → 动作 计算型只出建议值(模型分、建议额度),产物落进属性;动作把该属性当参数读或在条件里引用,核定与落地由动作完成——分工是流程约定,不是字段关系。动作之间同样不直接调用,衔接经事件驱动显式串联
❻ 接地二期 动作 → 数仓 执行日志钉到数仓表与列(执行者 · 动作码 · 时间 · 结果);无日志的动作登缺口——数据团队回填

存储表:动作表 actions.yaml(每条记录即一张"动作卡")

与其他五张表同为 YAML 列表,一条记录=一张动作卡。整卡在第一阶段填齐——正在描述动作的人最清楚它的参数、副作用、可逆性;空腔显式写 none("无参数""不可逆"是知识,沉默空白是缺口)。六要素=executor · target · product · params · side_effects · reversibility;骨架卡=六要素暂空的记录(盘点时批量生成、随后补齐)。

字段 回答的问题 取值 / 规矩 何时填
id / zh / en 编号(A+序号)/ 双名(动词短语) 第一阶段
category 职能域——执行主体属于哪个业务职能 授信审批 | 贷中管理 | 交易管控 | 催收 | 账务 …(开放清单) 第一阶段
facing 对客还是对内(可选标记 对客 | 对内——判据:客户能否感知本次状态变化 可选
executor 执行主体(机构操作者) 人(坐席/审批员)/ 系统(策略引擎)/ 混合 第一阶段
target 操作施加于谁 N 号 | P 号 | IF 号 第一阶段
product 产出什么 文本或 N 号(产出新对象时,该对象 product_of 指回本动作) 第一阶段
params 每次执行的输入变量(0..N 个) 列表;判据:会被规则引用或审计回看的才进 第一阶段
side_effects 顺带发生什么 写哪些属性(P 号,该属性 writer 指回本动作)、发什么通知 第一阶段
reversibility 能否反悔、怎么反悔 可逆 | 带条件可逆 | 不可逆 第一阶段
implicit 有人点按钮吗 true=系统自动执行 第一阶段
conditions 执行前置条件——挂在本动作上的规则 规则型函数 F 号清单;正本(语句、门类、出处)在函数表,此处只引用不复制;渲染时按编号拉取 第一阶段
refs 上述字段之外还涉及的对象 / 属性 ID 联想选择,不许自由造词 第一阶段
feedback 怎么知道这个动作做得好不好 观测指标+回看窗口 第一阶段
grounding · 二期 动作的接地:执行日志在数仓哪张表哪些列 { table, columns }——数据团队填写 二期
source / status / asOf / by 出处 / 状态 / 时点 / 填写人 同全表通用约定(1.6) 第一阶段

样例(一张整卡:受理提额申请——参数化受理、系统隐式执行):

- id: A-042
  zh: 受理提额申请
  en: accept-limit-increase
  category: 贷中管理
  facing: 对客
  executor: 额度策略系统
  target: N021                     # 提额申请(事件)
  product: 受理结论
  params: [事件类型, 渠道]
  side_effects: [P003]             # 受理状态:该属性 writer = A-042(互指)
  reversibility: 拒绝可重试
  implicit: true
  conditions: [F110, F112]         # F110 还款状态=Normal 才收单 · F112 提额总开关=ON;语句与出处在函数表
  refs: [N021, P003]
  feedback: 受理时效分布(提交→结论);月度拒绝率按渠道
  grounding: null                  # 【二期】数据团队回填,如 { table: fact_limit_req, columns: [acpt_sts] }
  source: DOC-2026-031#p5
  status: draft
  asOf: '2026-08-06'
  by: trista

2.5 函数(F · 计算蓝 / 规则橙)

函数与其相连构件(计算型 · 规则型) ❶ 读(inputs) 读哪些属性 / 对象=特征清单 ❷ 写产物(outputs) 落库成属性 · writer 互指 ❸ 挂载(host,四选一) ❹ 条件引用(refs) 条件读的其余构件 属性 · P / 对象 · N输入 属性 · P(产物)来源=推断 · writer=本函数 动作 · A执行前置条件 属性 · P取值约束 函数 · F(计算型)进出口红线 接口 · IF族级批发 · 一次生效 属性 · P(条件读)如:还款状态 函数 · F 逻辑单元:输入→输出,不改变世界 计算型算出一个值 规则型给出一个裁决 ❺ 接地(第二阶段) 函数本身不接地:数仓里只有它的脚印——落库的输出列经属性 / C 词典接地;知识层补记"这一列是算出来的"
函数与其相连构件(计算型 · 规则型)

定义与判定

按 Palantir 的定义,函数是运行在本体之上的自定义逻辑单元(custom logic on the Ontology):读取对象、属性与链接,返回一个结果——一个计算值,或一组"打算怎么改"的编辑意图;函数本身不落库,要改变本体,只能把编辑意图交给动作提交。本框架据此把函数定义为:由确定的输入得出确定的输出、且不改变世界的逻辑单元。

类比:函数≈一台只出结果、不改数据的计算器——喂进去值,出来一个值或一个"行 / 不行";对数仓同学来说,它≈一段加工逻辑(视图、存储过程、模型脚本),知识库只登记它的进出口,不登记内部实现。"额度评估模型"是一个函数(类型),某日对某客户跑出的那次评分是它的一次执行。

由此推出函数的三个特征:

特征 含义 落到函数表
只读不写——不改变世界 读值、算值、给裁决,都不改任何状态;产物落库以属性身份登记,治理级写入(核定额度、改状态)仍只能走动作(2.4 判定②) outputs 指向属性 / 对象,该属性 writer 指回本函数
进出口明确——黑盒边界 吃什么(inputs)、吐什么(outputs)、吐得准不准(版本指标);建模方法、特征工程、超参数不进知识库 inputs · outputs · versions;内部实现不设字段
规则型必有宿主——没有独立存在权 每条规则都要声明它约束的是哪个已建档构件,并由宿主决定它在哪一刻被检查;答不出宿主,登记就没完成 host(必填)· refs

按输出的性质,函数分为两个类型(ftype),判定各有一问:

ftype 输出是什么 判定问句 例子
计算型 一个值(评分、分群、比率、窗口聚合、模型输出),落库后以属性身份登记 "这个值是存着的,还是算出来的?"算出来的→计算型函数(存着的→属性,2.2) 催收评分、额度评估模型
规则型 一个许可判定——允许 / 拦截、必须 / 不得 "这句话带不带条件(如果 / 当 / 超过 / 不得 / 必须 / 除非)?"带条件的约束→规则型函数 还款状态正常才可提额;额度不得超过上限

两类共享同一骨架——都有输入面(读什么值、查什么条件)和输出面(吐出什么值、给出什么裁决)——因此同住一张函数表,靠 ftype 区分。它们与动作的分界始终不变:函数只出数、只判定,不改变世界;改变世界的只有动作。

规则并入函数的依据:Palantir 没有独立的"规则"构件——条件式约束散落在几处:动作的提交准则(submission criteria)、动作参数校验(parameter validation)、自动化的触发条件(Automate conditions)、函数内部的判断逻辑。它们的共同形状都是"给定条件→给出裁决",与计算型函数同为"输入→输出",只是输出是布尔裁决而非数值。本框架把这些并为函数的规则型,用 host 记录 Palantir 会把它挂在哪:

我们的宿主 Palantir 中对应的落点
A 动作 submission criteria——动作提交前必须满足的条件
P 属性 parameter / property validation——写入值时的校验
F 函数(计算型) 函数进出口的治理约束(哪些特征禁入、输出可用于何处)
IF 接口 接口级共享——对全体实现者一次生效

与 Palantir 的对应(防误读):Palantir 中属性取值有三条路径——管道产出(backing datasource,不经动作)、动作写回(Action writeback)、派生属性(运行时现算);其"编辑函数"只产出编辑意图,必须经动作提交才落库。我们的 writer=F 对应的是管道产出与派生属性这两条路(模型分 T+1 批量落库),不是"函数绕过动作直接编辑本体"。

计算在数据里是隐形的:数仓里只有它的脚印(落库的输出字段),而这些字段与原始事实字段外观无异——所以必须由知识层补记"这一列是算出来的"(属性来源=推断、writer 指回函数),防泄漏审查才有抓手。

细分类别

第一层:类型(ftype,第一阶段必填)

ftype 输出是什么 第一阶段填什么 例子
计算 一个值(落库成属性)或新对象 只立壳:id+名+outputs 催收评分、额度评估模型
规则 一个许可判定 填齐:语句+宿主 还款状态正常才可提额

计算型的细分(subtype 六型,沿用 Palantir 的函数分类,数据应用治理阶段标注):

subtype 含义 备注
查询 只读试算,不落库
编辑 批量写回属性 写回路径与目标属性的 writer 互指
流式 实时计算
模型集成 评分模型 / LLM 版本指标记在 versions
通知 输出为"给谁发什么"
API 调用 调外部数据 外部数据必经建档函数进入

规则型的细分(host 四类宿主)——选宿主判据:"这条规则想在哪一刻被检查":

host 语义 检查时机 占比
A 动作 执行前置条件 动作执行那一刻拦截 最多
P 属性 取值约束 值写入 / 校验时 次之
F 函数(计算型) 输入 / 输出边界红线 特征清单提交、输出被引用时 治理红线专用
IF 接口 族级批发 族内任何成员命中时 少数(省抄写)

refs——条件引用的其余构件:一条规则往往连着不止一个构件:"还款状态非 Normal 不得提额"读的是属性 P011、拦的是受理动作 A-042。

特例的写法(不设例外机制)

函数表是规则的唯一全集:宿主为单个动作的条件同样在此登记发号,动作表 conditions 字段按编号引用渲染——全局检索规则只需扫一处。

相连关系(对应图中编号)

图中线 方向 含义
❶ 读 属性 / 对象 → 函数(计算型) inputs:读哪些属性、对象——特征清单;边界规则(host=F)审查的正是这个"进口"
❷ 写产物 函数(计算型)→ 属性 / 对象 outputs:产物落库成属性(来源=推断,其 writer 指回本函数,互指)或产出新对象
❸ 挂载 函数(规则型)⇢ 动作 / 属性 / 函数(计算型)/ 接口 host:四选一,规则永不悬空——挂动作=执行门槛;挂属性=取值上限;挂函数=进出口红线(输入禁区与输出用途,不碰模型内部);挂接口=对全体实现者一次生效
❹ 条件引用 函数(规则型)⇢ 属性 / 对象 refs:条件里读的其余构件(不含宿主);改口径时反查波及范围
❺ 接地二期 函数 → 数仓 函数本身不接地:数仓里只有它的脚印——落库的输出列经属性 / C 词典接地;知识层补记"这一列是算出来的"

存储表:函数表 functions.yaml

分期义务:计算型第一阶段只立(id+名+outputs——发现"算出来的字段"时顺手立一行,让属性的 writer 有合法指向),其余在数据应用治理阶段补齐;规则型第一阶段就要填齐(语句+宿主)——写规则的人最清楚它约束谁。

字段 适用类型 含义 何时填
id / zh / en 全部 F+序号 / 双名(计算型 en 为名词,规则型 en 为语句短名 slug) 第一阶段
ftype 全部 · 必填 计算 | 规则 第一阶段
outputs 计算 产物落回哪些属性(P 号)或产出对象(N 号) 第一阶段
subtype 计算 六型(查询/编辑/流式/模型集成/通知/API调用) 治理阶段
inputs 计算 读哪些属性/对象——特征清单 治理阶段
caliber 计算 口径说明 治理阶段
versions 计算 [{ver, metrics{ks, lead_time…}, asOf}]——指标是版本元数据,不是知识条目 治理阶段
statement 规则 规则语句(人话,含完整适用条件) 第一阶段
host 规则 · 必填 宿主:A/P/F/IF 号——指向未建档名字直接拒收 第一阶段
gate 规则(宿主为动作时) 门类:状态门 | 客群门 | 开关门 | 位段门——动作卡渲染条件行时用 第一阶段
refs 规则 条件引用的其余构件 ID 清单(不含宿主)——引用未建档的先立档 第一阶段
owl_status 规则 是否进入一致性推理:已进 OWL | 待写入 | 建模约定不进 OWL
source / status / asOf / by 全部 同上

样例(计算型壳与完整各一 + 规则型四类宿主各一):

# —— 计算型 · 壳(第一阶段)——
- { id: F013, zh: 催收评分, en: CollectionScore, ftype: 计算, outputs: [P021], status: draft }

# —— 计算型 · 完整(治理阶段)——
- id: F001
  zh: 额度评估模型
  en: LimitEvalModel
  ftype: 计算
  subtype: 模型集成
  inputs: [N009, P002]
  outputs: [P004]                  # P004 的 writer 指回 F001(互指)
  caliber: 输出建议额度与风险分层,T+1 批量
  versions:
    - { ver: v2, metrics: { ks: 0.41 }, asOf: '2026-08-01' }
  status: draft

# —— 规则型(第一阶段填齐;四类宿主各一)——
- { id: F110, en: no-increase-unless-normal, ftype: 规则,
    statement: 还款状态非 Normal 不得提额,
    host: A-042, gate: 状态门, refs: [P011] }   # P011=还款状态:条件读它,闸门在受理动作
- { id: F115, en: limit-cap-20m, ftype: 规则,
    statement: 授信额度不得超过 2000 万 IDR, host: P001 }   # 约束的就是宿主本身,refs 无
- { id: F130, en: no-bill-amount-in-model, ftype: 规则,
    statement: 账单金额不得作为因子进入逾期预测模型,
    host: F010, refs: [P030] }               # P030=账单金额:禁它进入宿主函数的输入

# 特例=并列的独立规则,条件互斥(不设例外机制)
- { id: F120, en: accept-within-24h, ftype: 规则,
    statement: 非大额申请事件提交后 24 小时内必须给出受理结论, host: IF01 }
- { id: F121, en: large-withdraw-48h, ftype: 规则,
    statement: 大额提现申请(≥5000 万)提交后 48 小时内必须给出受理结论, host: IF01 }

2.6 接口(IF · 虚线框)

接口与其相连构件 ❶ 实现 · 归并(implementers) 同形的一族;登记时校验名下确有 shape 属性 ❹ 作为作用目标 受理动作 target=接口,一张卡管一族 ❷ 挂载(批发) 一条规则管一族 ❸ 声明形状(shape) 属性要求+动作签名,不拥有值 对象 · N 提额申请实现 可受理 对象 · N 分期申请实现 可受理 对象 · N 提现申请实现 可受理 动作 · A受理申请(参数化) 函数 · F规则型 属性 · P / 动作 · A提交时间 · 受理状态 · 受理动作 接口 · IF 对象类型的形状与能力 ≈体检标准表,不是报告 抽象 · 不背数据 · 类型层 ❺ 接地:无 接口不接地:它不背数据集、不能实例化——实现者各自接地;规则查找路径:实例 → 对象类型 → 接口 → 挂着的规则
接口与其相连构件

定义与判定

按 Palantir 的定义,接口(Interface)是"描述对象类型的形状与能力的本体类型"("an Ontology type that describes the shape of an object type and its capabilities")。它是抽象的:不背数据集、不能直接实例化——对象类型是具体的,接口只声明"实现(implement)它的对象类型必须具备什么形状";一个对象类型可以实现多个接口。面向接口写的规则、动作和工作流,对所有实现者一次生效——这就是官方所说的多态(polymorphism)。

类比:接口≈体检标准表,对象类型≈体检报告——标准表规定"必须查这几项",数值永远在报告上;也≈数仓里一份只有列名、没有数据的模板表结构。Palantir 官方例子:Facility(设施)接口声明"设施名称、位置"两条属性;机场、工厂、维修机库三个对象类型都实现它,各自再带专有属性;工作流面向 Facility 写一次就能处理三者,日后新增第四种设施只要实现该接口,现有工作流零改动兼容。对应到我们:可受理接口声明"提交时间、受理状态、受理动作",提额申请、分期申请、提现申请都实现它。

由此推出接口的三个特征:

特征 含义 落到接口表
声明形状,不拥有值 规定"实现者必须有这几个属性、支持这几个动作",值永远在实现者身上;登记实现关系时机器校验其名下确有形状要求的属性 shape(P 号+A 号)
类型层生效,不参与执行 每笔业务实例各走各的;接口只是规则查找路径上的一站:实例 → 对象类型 → 接口 → 挂着的规则 implementers
规则的批发渠道 规则挂对象是零售(一条管一个),挂接口是批发(一条管一族);新成员登记实现即自动继承全部接口规则 由函数表 host=IF 号反查

在本框架中,接口用作同形对象的归并机制,判定分三步:

名称辨析:本书的"接口"专指 Palantir Ontology 的 Interface(对象形状的抽象类型),与 API / SDK 接口无关——后者在本书一律写作"API""SDK 字段"。

细分类别(已知与候选)

状态 接口 归并的是什么
已知 可受理 各类申请事件的三态受理(待受理 / 已受理 / 已拒绝)
已知 可质押 可作押品的对象
已知 可核销 可被核销的债权对象
候选 可冲抵、可出账、可管控、可计息、可触达(催收合规红线)、可上报、可撤销 等同一句规则要抄第二遍时再归并

相连关系(对应图中编号)

图中线 方向 含义
❶ 实现 · 归并 对象 → 接口 implementers:哪些对象类型实现此接口;登记时校验同形(名下确有 shape 要求的属性)
❷ 挂载 函数(规则型)⇢ 接口 host=IF 号:一条规则管一族,对全体实现者一次生效;新成员自动继承
❸ 声明形状 接口 ⇢ 属性 · 动作 shape:属性要求(P 号)+动作签名(A 号)——只声明,不拥有值
❹ 作为作用目标 动作 → 接口 受理类动作 target=接口:一张卡带事件类型参数,管全部实现者(2.4 ❶)
❺ 接地 —— 接口不接地:它不背数据集,实现者各自接地

存储表:接口表 interfaces.yaml

字段 含义
id / zh / en IF+序号 / 双名
shape 共同形状:属性要求(P 号)+动作签名(A 号)
implementers 实现者 N 号列表(登记时校验同形)
note / source / status / asOf / by 同上

样例:

- id: IF01
  zh: 可受理
  en: Acceptable
  shape: [提交时间, 受理状态(P003), 受理动作(A-042)]
  implementers: [N021, N022, N023]
  note: 客户行为的准入规则挂受理动作或本接口
  status: draft
第 3 章

数据字段匹配(第二阶段)

第一阶段产出的知识是"纸面"的:定义清楚、结构完整,但尚未与真实数据钉在一起。第二阶段由数据团队完成四类接地——即前文各表中标 二期 的字段。

3.1 四类接地一览

接地对象 落点 内容 判据/要点
对象 → 表 对象表的 grounding 主档表 + 身份列 主档表唯一:"身份列不重复且覆盖全体实例";身份列在其他表作外键出现的归链接;没有主档表的标 no_master 并登缺口
属性 → 列 C 对照词典 知识名 ↔ SDK 名 ↔ 数仓列 + 脱敏样例 一条属性可对多列;空词典=该知识不可用数据验证
链接 → 外键 关系表的 grounding 外键列或映射表 每一行=一条关系实例;基数由此可验证
动作 → 日志表 动作表 grounding 字段 执行记录所在表列 执行者/动作码/结果三件套所在

3.2 C 对照词典 crosswalk.yaml

C 对照词典与其相连构件 ❶ 指回属性(ref) 知识侧业务名 · 一条属性可多词条 ❷ 产品侧名 sdk_field:行方文档 / SDK 字段 ❸ 数仓侧列 dw_column + 脱敏样例 ❹ 运行时翻译 业务名 → 真实表列再查数 不经此表 对象 / 链接 / 动作各用自身 grounding 属性 · P业务名:"受理状态" SDK 字段acceptStatus 数仓列…acpt_sts 数据校验器用真实数据验知识 对象 · N / 链接 · Rgrounding 在各自表内 C · 对照词典 属性的接地登记(辅助) 一行=一个词条:三方一名 ≈属性→列映射 · 数据字典页 ❺ 核实进度 verify(只许数据角色推进) candidate 机筛提名 judged 人工确认 sampled 样例核对 verified 三方一致
C 对照词典与其相连构件

定义与判定

C 对照词典是属性的接地登记:一个词条=一条属性在三个世界里的名字对齐记录——知识侧的业务名("受理状态")、产品 / SDK 侧的字段名(acceptStatus)、数仓侧的库.表.列(fact_limit_req.acpt_sts)——并带一个"经数据核实"的进度章(verify)。它是辅助登记,不是构件(删掉它,对世界的描述不会少一块,只是知识暂时验证不了)。

用数仓的话说,它是属性语义层与字段物理层之间的桥接表:attributes.yaml 回答"这个属性是什么"(口径、来源、敏感……与数仓无关),crosswalk 回答"这个属性在哪"——一条属性可对多列(实时 / 日切 / 快照各一列),一列也可服务多条属性,典型的多对多,所以拆成独立的中间表:一行一个对应关系,各带样例与核实进度。修改、查找、分工都落在这张表上——数仓改名只动它,机筛提名只往它追加行,数据角色只有它的写权限。对象、链接、动作的接地是"一次定、少变"的结构事实,嵌在自身表的 grounding 字段里即可,不经此表。

类比:在 Palantir 中,对象类型背后有 backing datasource,每条属性都映射到该数据集的一列——属性与列的映射是本体接地的基本单位。C 词典就是这张"属性 → 列"映射表,只多了两样:中间夹一层产品 / SDK 名(三方对齐,因为行方文档与数仓命名不同),以及一个核实进度。对数仓同学它≈数据字典(data dictionary)里"业务名 ↔ 物理列"那一页,附加脱敏样例作证据。

由此推出词典的三个特征:

特征 含义 落到词典表
三方一名——一行钉住三个名字 业务名 / SDK 名 / 数仓列指的是同一个东西;一条属性可对多列(多个词条) ref · sdk_field · dw_column
只做翻译,不改知识 知识条目永远写人话;数仓改表名只改词典这一行,知识一个字不动 dw_column 可变,ref 不变
有证据、有进度 脱敏样例证明"真的是它";verify 四态只许数据角色推进 sample · verify · asOf · by

判定——什么进词典、什么不进:

为什么要这本词典,而不直接把表名写进知识里

理由 说明
知识保持人话 规则写"授信额度不得超过 2000 万",而不是 "credit_limit ≤ 20000000"——业务同事能读,知识脱离数仓也独立成立
校验时充当翻译 用真实数据验证知识时,校验器现场翻词典,把业务名词解析成真实的库.表.列再去查数——没有词条,知识永远只是文字,验证不了
变更防火墙 数仓明年改表名,只改词典这一行,知识条目一个字不动、所有规则照常可验

相连关系(对应图中编号)

图中线 方向 含义
❶ 指回属性 词典 → 属性 ref:知识侧业务名——一条属性可对多个词条
❷ 产品侧名 词典 → SDK 字段 sdk_field:行方文档 / SDK 中的字段名
❸ 数仓侧列 词典 → 数仓列 dw_column:库.表.列;sample 为脱敏证据
❹ 运行时翻译 校验器 ⇢ 词典 校验知识时把业务名解析为真实表列再查数;无词条则该条知识不可验
❺ 核实进度 verify 四态 candidate → judged → sampled → verified,只许数据角色推进(3.3)

字段词典

字段 含义 取值/格式
id 词条编号 C + 三位序号
ref 知识侧:指回属性 P 号(❶)。对象与链接的接地各在其登记表的 grounding 内,不经此表 P 号
sdk_field 产品/SDK 侧字段名(❷) 文本
dw_column 数仓侧 库.表.列(❸) 文本
sample 脱敏样例值——证明"真的是它"的证据(账号类必须掩码) 文本
verify 核实进度(四态,❺) candidate | judged | sampled | verified
asOf / by 核实定格日 / 经手数据角色 日期 / 人名

verify 四态逐个说(只许数据角色推进):

含义 谁推进
candidate 机筛提名——"这一列像是它",尚无人确认 机筛自动产生
judged 人工确认——业务/数据同学看过,认定对应关系成立 人工判定
sampled 样例核对——抽真实值比对过(分布、空值率、格式都对得上) 数据角色
verified 三方一致——知识口径、SDK 定义、数仓实值全部对齐,词条正式收录 数据角色

样例(一个已收录词条 + 一个刚提名词条)

- { id: C011, ref: P003, sdk_field: acceptStatus,
    dw_column: fact_limit_req.acpt_sts, sample: "P / A / R",
    verify: verified, asOf: '2026-08-07', by: 数据同学 }

- { id: C012, ref: P002, sdk_field: behaviorScore,
    dw_column: cust_info.cscore, sample: none,
    verify: candidate }                     # 机筛刚提名,待人工确认

3.3 verify 核实状态机(全体接地记录通用)

所有接地记录——对象与链接的 grounding、词典行——共用同一套核实进度,且只许数据角色推进

candidate(机筛提名)→ judged(人工确认)→ sampled(样例核对,词典专有)→ verified(三方一致)

它与知识条目自身的 status(draft/verified)相互独立:定义核实了不等于接地核实了,两个进度条各自推进——一个对象可以定义已 verified 而 grounding 还是 candidate,反之亦然。

3.4 DOC 文档登记 registry.yaml

出处锚的登记处(第一阶段起即使用)。文档上传即登记:DOC 编号、sha256 去重、上传人、关联切片;解析后切成带锚点的段落(如 DOC-2026-031#p5),全库构件的 source 指向这些锚——每条知识都能一键回到原文。

- { id: DOC-2026-031, title: 额度调整管理办法, sha256: 9f2a…,
    uploader: leo, date: '2026-08-07', slices: [额度成长], status: 已抽取 }
第 4 章

知识图谱

4.1 建成后长什么样

定义与判定

知识图谱是六张登记表的可视化编译产物:节点=对象、属性、动作、函数、接口的登记行,边=链接以及各表里互指的字段(宿主、写入方、target、host……)。它不另存数据——从登记表实时编译,改表即改图;点击任何节点应能回到它的登记行、出处锚与接地状态。

类比:登记表≈账本,图谱≈按账本自动画出的地图;Palantir 里对应的是 Ontology Manager 的对象类型关系图与 Vertex 的图探索视图——同样是从本体定义现算出来的,不是另一份数据。

由此推出图谱的三个特征:

特征 含义
只读、可再生 图上没有任何东西是"画上去"的,删了图重编译一模一样;要改图,改表
形状即约束 每种边只允许出现在特定颜色的节点之间(4.2 约束表);一条不该出现的边就是一条错数据
一图两读 结构读法看骨架(对象与链接),治理读法看橙色虚线(规则挂在哪、管着谁)

判定:"这张图上的东西能否在某张登记表里找到那一行?"找不到的不该出现在图上;反过来,登记表里已互指的关系(属性 writer 指向动作、动作 side_effects 指向属性)在图上只画一条边。

样例:提额业务线

下图是"提额"业务线建成后的样例(节点编号与第二章样例一致):

知识图谱案例 · 提额业务线 持有 发生于 宿主 宿主 宿主 写产物 写入 作用于(参数化) 挂载 挂载 挂载 实现 · 归并 客户N001 · 实体 贷款账户N009 · 实体 提额申请N021 · 事件 授信额度P001 · 事实 建议额度P004 · 推断 受理状态P003 · 枚举 额度评估模型F001 · 计算型 受理提额申请A-042 · 贷中管理 还款状态正常才收单F110 · 规则 · host=A-042 非大额 24h 内受理F120 · 规则 · host=IF01 大额 48h 内受理F121 · 与 F120 互斥 可受理 IF01 · 接口(申请类事件归并) 灰实线=链接 · 粉线=宿主 · 青线=动作作用于 / 写入 · 蓝线=函数读 / 写产物 · 橙虚线=规则挂载 · 灰虚线=实现接口
知识图谱案例 · 提额业务线

读图路径(按颜色):

看什么 图上
骨架(紫+灰) 客户 持有 贷款账户,提额申请 发生于 账户——三个对象由两条链接串起
状态(粉) 授信额度挂在账户上;建议额度、受理状态挂在申请上——每条属性一条粉线指回宿主
算值(蓝) 额度评估模型 F001 授信额度、写产物 建议额度(P004 来源=推断,writer=F001)
出手(青) 受理动作 A-042 作用于 "可受理"接口(参数化受理,一张卡管全部申请事件),写入 受理状态
划界(橙虚线) F110「还款状态正常才收单」在受理动作上(执行前置条件);F120「非大额 24h 内受理」与 F121「大额 48h 内受理」并列挂在"可受理"接口上——条件互斥、对全体实现者一次生效,没有"例外"
归并(灰虚线) 提额申请 实现 "可受理"接口;分期申请、提现申请实现同一接口即自动继承 F120 / F121

4.2 建造标准

颜色(六色定案,全平台一致)

构件 浅底 / 描边 / 深字(浅色模式参考值)
对象 N #EEEDFE / #534AB7 / #3C3489
属性 P #FBEAF0 / #993556 / #72243E
动作 A #E1F5EE / #0F6E56 / #085041
函数 F · 计算型 #E6F1FB / #185FA5 / #0C447C
函数 F · 规则型 #FAECE7 / #993C1D;边色 #D85A30
链接 R 灰(边色 #888780) 链接画成边,不画节点
接口 IF 灰虚线框(无填充) 第六类构件;虚线以示抽象类型——不背数据、不可实例化

同一构件按类型分色:计算型与规则型同属函数,但在图上必须一眼可辨"这是算值的"还是"这是划界的",故保留两色。

线样式

样式 含义
灰实线 链接(对象↔对象);双端箭头=双向语义
粉实线 宿主(属性→对象)
青实线 动作的作用于(→对象 / 接口)/ 写入(→属性)/ 产出(→对象)
蓝实线 / 弧线 计算型函数的读(属性 / 对象→函数)/ 写产物(函数→属性 / 对象,弧线避让)
橙虚线 挂载(规则型函数→宿主:动作 / 属性 / 函数 / 接口)——虚线专属规则,一眼识别"这是约束不是结构"
橙点线(可隐藏层) 条件引用(规则型函数⇢refs 里的属性);默认隐藏,改口径查波及时打开
灰虚线 实现 · 归并(对象⇢接口)

图谱约束(自动校验,违反即数据有错)

  1. 灰实线只出现在 紫↔紫(链接两端必须是对象);粉实线只出现在 粉→紫(属性必有宿主对象);
  2. 青节点的边只有 作用于 / 写入 / 产出 三种;蓝节点的边只有 读 / 写产物 两种;青蓝之间无直接边(分工经属性中转,2.4 ❺);
  3. 橙节点必有一条挂载边,不允许悬空;挂载边终点只能是 青 / 粉 / 蓝 / 接口框;
  4. 灰虚线只出现在 紫⇢接口框;接口框本身不带粉线(接口不拥有属性值)。
第 5 章

执行纪律(供 LLM 遵照)

本章目的:LLM 处理知识分类时,遵照本章的判定流程与纪律,对输入的全部业务知识做一轮完整分类,归入第一至四章定义的架构。本章可独立作为系统提示词使用。

5.0 总纲

对象是骨架,属性是状态,动作和函数推动状态变化,规则给变化划界,接口把同形归并。任何一条业务知识拆开后只会是这六类构件之一(规则是函数的一个类型)。判定的目标不是贴标签,而是逼出这条知识缺失的部分(宿主、执行者、出处、条件边界)。你只做整理和追问,不做裁决、不编造出处。

5.1 六问判定流(按顺序,命中即停)

P1 带条件吗?(如果 / 当 / 超过 / 不得 / 必须 / 除非)
   → 是规则:登函数表,ftype=规则。追问:
     a. 宿主是谁?(约束哪个动作/属性/函数/接口)——答不出=知识未完成,禁止挂未建档的名字
     b. 条件里还引用了哪些构件?→ 登 refs(不含宿主);引用未建档的先立档
     c. 它是不是某条已有规则的特例?→ 不设例外机制:写成独立条目,把适用范围写进条件里,
        并回改被特化的那条,使两条条件互斥;范围重叠而结论不同=冲突,登记不裁决

P2 说的是一个操作吗?执行主体是谁?
   → 机构操作者(审批/调额/催收/冻结/核销)= 动作。按六要素建卡。
     ⚠️ category 填职能域——执行主体隶属的业务职能(授信审批 / 贷中管理 / 交易管控 / 催收 / 账务 / 客服 …,开放清单:
        找不到合适的可新增,按执行主体归属命名、先查同义);对客/对内选标 facing;系统自动执行标 implicit
     ⚠️ 与函数的分界:只出数、只判定、不改状态的不是动作(转 P1/P3);真正改状态的才是动作
   → 客户(支用/还款/申请)= 对象(事件),转 P5 建档。
     ⚠️ 客户行为的准入校验是规则,宿主=机构对应的受理动作(参数化;系统自动执行也建档,标隐式)
   → 大词(审批/重组/开户)先拆:模型算分=计算型函数、阈值裁决=规则型函数、核准落地=动作;
     客户申请=事件对象、新造之物=产物对象

P3 它是算出来的吗?(评分 / 分群 / 比率 / 窗口聚合 / 模型输出)
   → 是函数:登函数表,ftype=计算。只立壳(id+名+outputs)。追问:产物落到哪个字段?
     ⚠️ 函数输出落库后是属性:来源=推断,写入方指回函数——防泄漏的字段级根源
     ⚠️ KS/精度/提前量是函数版本元数据,不单独成条
     ⚠️ 函数只出数不做主:见到"模型直接决定",追问阈值(规则)与生效动作在哪

P4 它描述某个东西的状态或口径吗?
   → 是属性。先答宿主(答不出先回 P5 立对象),再打五轴:
     来源(事实|推断|构造)/ 结构(标量|枚举|结构组|集合)/
     写入方(客户提交|A号|F号|时间驱动|null)/ 归属(专有|共享)/ 敏感(明文|脱敏|禁展示)
     ⚠️ 结构=枚举 → 取值逐个登进取值字典;=结构组 → 整组登记,禁止逐位散登
     ⚠️ 建议值与核定值是两个属性:模型吐的(推断/写入方=F)≠ 动作核定的(事实/写入方=A)
     ⚠️ 快照日期(ds / rpt_date 等)是数据机制元数据,不是业务属性
     ⚠️ 属性只登当前值:一段会变化的历史(额度调整、状态变更)不塞进属性,立事件对象(product_of=写它的动作)

P5 它有自己的身份标识吗?(有主键 / 编号,能逐个指认;有生命周期)
   → 是对象。定二分(实体|事件),记身份标识;若是某个动作的产物(查征信→征信快照、重组→新借据),填 product_of=该动作号。
     ⚠️ 标识字段揭示对象:出现新标识符=存在新对象(人的标识与账户的标识是两个对象)
     ⚠️ 别被表结构骗:对象可能藏在别的表的某一列里

P6 它连接两个对象吗?
   → 是链接。记动词、方向、基数。kind 不填(默认 structural)。
     ⚠️ 两端必须都是已建档对象;属性/动作/函数不能当端点

5.2 动作拆并纪律

大词先走时间线:数几个执行主体、停几站,逐条对表——

判据 拆(命中任一即拆) 并(命中即并)
执行主体 中途换人 全程同一执行主体
条件检查时点 不同步骤各查各的 同一套条件、一次检查
中间态 中间能停留、可查询 一步到位、无中间态
可逆性 各步撤销方式不同 同一种撤销方式
产物 各步产物不同 同形状 × N——参数化合并,差异进 params

口诀:一张卡=一个执行主体+一个检查时点+一种撤销方式。动作须唯一:一个执行主体一张卡(按名称+执行主体、作用目标、产物查重)。拆错不要紧,审核复核。

5.3 填写纪律

  1. 三态:知道→填值;确认无→填 none(合法知识);不知道→留白(缺口)。禁止为凑格式编造。
  2. 动作卡整卡填齐:六要素+conditions 全填,空腔显式 none;只有 grounding 留给第二阶段。
  3. 函数分型填写:计算型只立壳(id+名+outputs),六型、inputs、versions 不追问;规则型第一阶段填齐(语句+宿主),条件边界写进语句。
  4. kind 与接口不生产:链接不填 kind;永远不主动创建接口——发现同一条规则要写第二遍时,仅提示"此处或可归并接口,交审核"。
  5. 每条知识必须锚出处:能命中原文→ DOC-ID#pN;口述→记录原话并标手填。无出处只能存草稿。
  6. 引用用 ID:宿主、写入方、两端一律填已建档构件 ID;找不到→先立档(对象或骨架卡)再引用,禁止裸名字。
  7. 发现矛盾不改写:与已有知识冲突时引导登记冲突条目,禁止静默覆盖任何一方。规则条件范围重叠且结论不同,同样按冲突登记,不做默认裁决。
  8. 二期字段不填:grounding、crosswalk 留空(六张表一致),那是数据团队的职责。

5.4 输出模板(七节,对应存储路由)

## 1. 对象表(按实体 / 事件分节)
| 对象 | en | type | 产物于(动作号) | 定义 | 身份标识 | 出处 |
## 2. 属性表
| 属性 | en | 宿主 | 口径 | 来源 | 结构 | 写入方 | 归属 | 敏感 | 出处 |
## 3. 关系表
| 链接 | en | 源对象 → 目标对象 | 基数 | 出处 |
## 4. 动作表(整卡:六要素+条件;含受理模式与隐式动作)
| 动作 | en | 职能域 | 对客/对内 | 隐式 | 执行者 | 作用对象 | 产物 | 参数 | 副作用 | 可逆性 | 出处 |
  每个动作附条件行:| 门类 | 条件语句 | 出处 |
  (每行入函数表规则型:host=本动作、gate=门类;动作表 conditions 只引用其编号)
## 5. 函数表 · 计算型(壳)
| 函数 | en | 产物落到哪个字段/属性 | 出处 |
## 6. 函数表 · 规则型
| 规则 | en 短名 | 条件语句(含完整适用范围) | 宿主(已建档构件 ID) | 门类(宿主为动作时) | 引用构件(refs) | 出处 |
## 7. 接口表——不填(后续归并阶段归并)

5.5 易混边界速查(13 条)

# 陈述 归类 关键一步
1 逾期天数 属性 存着的(写入方=时间驱动)
2 180 天逾期次数 函数(计算型) 算出来的
3 风险分群 计算型函数产物→属性 标推断+写入方=F
4 客户还款 对象(事件) 执行主体=客户
5 机构坐席外呼 动作 执行主体=机构操作者
6 利率 3% 属性=规则参数 双登记(属性表+函数表规则型)
7 还款承诺(PTP) 对象 动作的产物
8 白名单放行 函数(规则型) 独立条目:适用客群写进条件,与通则条件互斥
9 KS 0.536 函数版本元数据 不入图谱
10 在贷重组 大词拆三件套 申请=事件、执行=动作、新借据=产物、门槛=规则
11 建议额度 vs 初始额度 两个属性 函数产建议(推断/F),动作做核定(事实/A)
12 初始额度 · 当前额度 · 额度调整 两个属性+一个事件对象+一个动作 初始额度=属性(写入方=授信审批动作,之后不变);当前额度=属性(写入方=调额动作,被覆盖);额度调整记录=事件对象(一次一条,product_of=调额动作);调额=动作。历史不塞进属性,沿"账户→调整记录"链接按时间排
13 客户登录 · APP 定位 对象(事件) 客户发起,不是动作;不带 product_of(对照:机构查征信=动作,征信快照=其产物)

5.6 完整性校验(提交前逐条过)