AI 新风口 FDE:打通业务与技术(第二场)——附高考志愿填报项目本体构建实战
本文原是一场内部分享的听课笔记(FDE 系列第二场,主题:业务本体 Ontology 的构建)。在整理归档时,我把它升级成了一份可复用的方法论:用我正在合作的"刘校高考志愿填报 App"项目做完整实战演示——构建专属本体、设计工作区、跑通三个核心 skill、产出概念关系图与标准 OWL 文件。读完这一篇,你可以把同样的流程套到任何"人脑经验 + 零散数据"的传统业务上。
1. FDE 概念回顾:两大价值方向
FDE(Forward Deployed Engineer,前沿部署工程师)的核心任务,是填补 AI 大模型与企业落地之间的鸿沟——把模型能力部署进真实业务并产生价值。
它的价值方向有两个:
| 方向 | 典型手段 | 适配场景 |
|---|---|---|
| 获客 | GEO(生成式引擎优化):优化企业在豆包、Kimi 等 AI 搜索中的推荐与曝光;AI 外呼、AI 短视频 | 工厂等传统企业 |
| 降本增效 | 企业 AI 改造,如电商客服快速查询订单与物流 | 企业内部流程优化 |
本案例的定位:刘校的志愿填报项目是一条完整的"降本增效"样本——把资深规划师 24 年的判断经验(人脑隐性知识)外化为 AI 可执行的业务本体;同时它自带获客属性(湖南区域家长的信任 + 3M 方法论 IP)。一个项目同时踩中 FDE 两大方向,这也是我选它做演示的原因。
2. 本体 Ontology:给 agent 的业务上下文
2.1 本体包含的两类内容
- 业务模型定义(Schema):类型、属性、关系和语义约束——"规则长什么样"。
- 具体实例事实(Facts):模型下的实际数据——"具体是谁、发生了什么"。
注意:这里的"模型"指业务模型,不是大语言模型。
2.2 四个基本构件
- 对象:某类实体或事件——客户、订单、学生、专业组。
- 属性:对象的特征——姓名、分数、预算区间。
- 关系(Link Type):对象间有明确意义的连接——"任职于""选修""包含"。
- 实例:对象的实际数据——"王敏是员工对象的实例,通过'任职于'连接研发部"。
同一个名称在不同领域含义不同(人资领域的"王敏"是员工,教育领域可能是学生),所以本体必须绑定具体业务领域。

2.3 构建 Schema 前要明确的五件事
- 类型与层级;2. 身份与命名(唯一标识);3. 属性定义;4. 关系定义;5. 语义约束。配套还要做数据映射、数据校验和业务规则(如"库存低于阈值时建议补货")。
OWL 就是承载这一切的标准格式——就像 Markdown 之于文本,OWL 之于本体。它是 W3C 标准的结构化数据格式,机器可读、工具可验证。
3. 实战:为高考志愿填报项目构建专属本体
3.1 业务理解先行(agent 读资料,不猜)
项目目录 Y:\9. 刘校 高考 志愿填报 app 里现成的"资料":
- 历史案例:3 个真实学生的完整填报档案(志愿表 xlsx、评估报告 PDF、对话记录)——天然的实例事实来源;
- 产品策划:7 份调研与方案文档(市场调研、Skill 体系深度设计等)——业务规则与实体来源;
- 专家 skill 原型:诊断原型 + 咨询专家 SKILL.md——追问逻辑的雏形。
从这些资料里读出的业务主线:学生带着硬信息(分数/选科)和家庭约束来 → 动态追问挖出真问题 → 生成结构化画像 → 匹配专业 → 指导志愿表 → 4 年后回访校准。这条主线就是本体的骨架。
3.2 核心概念与实体(任务①产出)
| 实体 | 英文标识 | 关键属性 | 业务含义 |
|---|---|---|---|
| 考生 | Student | caseId(唯一标识)、年份 | 核心实体,一切关系向外辐射 |
| 家庭 | Family | budgetRange 预算、地域、行业资源 | 分数之外的真实约束层 |
| 家长 | Parent | parentExpectation 期望 | 家庭成员,期望常与学生意愿冲突 |
| 高考成绩 | GaokaoScore | examScore 分数、rank 位次、province 省份 | 决定可选域的硬信息 |
| 选科组合 | SubjectSelection | combo(如 物理+化学+生物) | 专业组准入门槛 |
| 追问会话 | ConsultSession | 槽位状态、时间 | grill 引擎的一次完整追问 |
| 追问问题 | GrillQuestion | 所属层(认知/能力/家庭/目标) | 问题库的可复用单元 |
| 常见错误 | CommonError | errorSignal 触发信号 | 刘校错误清单条目,护城河核心 |
| 学生画像 | StudentProfile | 四层结构化字段 + 偏差标记 | 追问的产出 |
| 评估报告 | MatchReport | matchScore 匹配度 | 专业×个人匹配结论 |
| 志愿表 | VolunteerForm | year 年份 | 某省 96 个志愿的完整列表 |
| 志愿条目 | VolunteerEntry | entryIndex 序号、tier 冲/稳/保 | 一个有序条目指向一个专业组 |
| 院校 | University | 城市层级、办学层次 | — |
| 院校专业组 | MajorGroup | 选科要求、招生计划 | 投档基本单位 |
| 专业 | Major | 培养方向、就业出口、学费 | 匹配计算的目标端 |
| 案例记录 | CaseRecord | 沉淀时间 | 数据飞轮的燃料 |
| 追踪结果 | TrackingResult | trackingOutcome 真实去向 | 4 年后校准匹配规则 |
3.3 关系清单(Link Type)
| 关系 | 定义域 → 值域 | 语义约束 |
|---|---|---|
| belongsToFamily | Student → Family | 每个考生恰属一个家庭 |
| hasMember | Family → Parent | — |
| hasScore | Student → GaokaoScore | 每年一条 |
| selectedSubjects | Student → SubjectSelection | 唯一 |
| hasConsultSession | Student → ConsultSession | 可多次 |
| triggeredBy | GrillQuestion → CommonError | 错误信号驱动追问,飞轮入口 |
| flagsError | ConsultSession → CommonError | 会话中标记的认知偏差 |
| generatesProfile / generatesReport | ConsultSession → Profile / Report | — |
| fillsForm | Student → VolunteerForm | — |
| guidedBy | VolunteerForm → MatchReport | 填报受报告指导 |
| containsEntry | VolunteerForm → VolunteerEntry | 1..96,有序 |
| targetsGroup | VolunteerEntry → MajorGroup | 每个条目恰指向一个专业组 |
| includesMajor | MajorGroup → Major | — |
| offeredBy | MajorGroup → University | 每个专业组恰属一个院校 |
| recordedAs | ConsultSession → CaseRecord | 每次服务沉淀一条案例 |
| hasTracking | CaseRecord → TrackingResult | 飞轮闭环 |
3.4 概念关系图(任务④前半)

图中红色虚线就是这条业务最重要的资产——数据飞轮:案例库的错误清单反哺追问引擎,志愿表 4 年后回访,追踪结果回填案例库,匹配越来越准。这也是竞品用钱买不到的时间壁垒。
4. 工作区目录结构设计(任务②产出)
参照笔记中"操作提示词 / 工作区 / 开始使用.md"的三件套约定,为项目设计:
Y:\9. 刘校 高考 志愿填报 app\
├── 操作提示词\ # 每步复制给 agent 的提示词
│ ├── 01-建立业务理解.md
│ ├── 02-ontology-design.md
│ ├── 03-提取事实.md
│ └── 04-本体生成与验证.md
├── 工作区\
│ ├── agents.md # 自动指导 agent 调 skill(免手写提示词)
│ ├── skills\ # 三个核心 skill 的定义
│ │ ├── ontology-design\SKILL.md
│ │ ├── extract-facts\SKILL.md
│ │ └── owl-generate-validate\SKILL.md
│ ├── 资料\ # 事实唯一来源
│ │ ├── 历史案例\ # 3 个学生的 xlsx/pdf(提取前脱敏)
│ │ ├── 产品文档\ # 01-07 号策划文档
│ │ └── 刘校经验\ # 错误清单口述稿(20 条)
│ ├── 事实清单\
│ │ └── facts-with-evidence.md # 提取的事实 + 证据 + 来源
│ └── 本体\
│ ├── gaokao-ontology.owl # 最终产物
│ └── versions\ # 版本备份
└── 开始使用.md # 新会话 / 新同事的入口文档

要点:资料与产出分离(资料\ 只读、本体\ 只写)、证据链独立成档(facts-with-evidence.md)、agents.md 充当路由(agent 进来先读它,知道什么步骤调什么 skill)。
5. 三个核心 Skill 的实操流程(任务③产出)

Skill 1:ontology design(设计业务模型)
目标:从业务目标和资料中分析出类型、属性、关系,产出可讨论、可确认的模型候选。
提示词(复制到 操作提示词\02-ontology-design.md):
读取
工作区/资料/下所有文件(历史案例 xlsx、产品文档 md、经验口述稿)。业务目标:为高考志愿填报咨询构建本体,使 agent 能基于学生硬信息与家庭约束动态追问,生成专业匹配建议并指导志愿表。 请输出:① 业务对象清单及各类的属性;② 对象间可建立的关系(含基数);③ 你无法从资料判断或发现互相矛盾的地方——直接列出,不要猜。
人工确认点(逐组确认,不可跳过): - 家庭要不要独立成实体?(结论:要——家庭约束是"分数之外的真约束",刘校判断真问题在这) - 志愿条目要不要从志愿表里拆出来?(结论:要——96 个条目各自指向专业组,且有冲稳保梯度属性) - 案例库要不要作为一等实体?(结论:要——它是数据飞轮的载体,护城河本体化)
Skill 2:提取事实(Facts with Evidence)
目标:按已确认模型,从原始资料提取可靠事实与关联,保留证据和来源。
提示词:
基于已确认的模型,从
资料/历史案例/提取事实:每个学生生成 Student 实例及其成绩、选科、家庭约束、志愿条目、最终去向。每条事实必须附证据(文件名 + 工作表/页码)。无法核实的字段填 unknown,禁止推断。先执行脱敏:真实姓名替换为"案例A/B/C"。
人工确认点:抽查 3 条证据链是否真实对应;检查脱敏是否彻底(姓名、学校、可识别信息)。
Skill 3:本体生成与验证(OWL Output)
目标:把确认的模型定义与事实写入同一个 OWL 文件。
提示词:
将确认的模型与事实清单写入
工作区/本体/gaokao-ontology.owl。要求:RDF/XML 格式;命名空间http://seguzhixue.cn/ontology/gaokao#;所有类与属性带中文 rdfs:label;含至少 2 条 owl:Restriction 语义约束。生成后自检并输出报告:① XML 语法;② domain/range 一致性;③ 实例必填属性完整性。
人工确认点:把 .owl 文件拖进 Protégé(或用 rdflib 解析)可视化核对;重点看关系箭头方向是否符合业务直觉。
6. 标准 OWL 文件(任务④后半,完整可运行)
以下即本项目产出的 OWL(实例已脱敏为"案例A",数值为演示值——真实事实由 Skill 2 从历史案例中带证据提取):
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns="http://seguzhixue.cn/ontology/gaokao#"
xml:base="http://seguzhixue.cn/ontology/gaokao"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#">
<owl:Ontology rdf:about="http://seguzhixue.cn/ontology/gaokao">
<rdfs:label>高考志愿填报业务本体</rdfs:label>
<rdfs:comment>为志愿填报 AI 咨询业务定义的业务模型(Schema)与脱敏示例实例(Facts)。构建工具链:ontology design / 提取事实 / 本体生成与验证 三个 skill。</rdfs:comment>
</owl:Ontology>
<!-- ==================== 一、类定义(Schema) ==================== -->
<owl:Class rdf:about="#Student">
<rdfs:label>考生</rdfs:label>
<rdfs:comment>志愿填报业务的唯一核心实体,以案例编号唯一标识。</rdfs:comment>
</owl:Class>
<owl:Class rdf:about="#Family">
<rdfs:label>家庭</rdfs:label>
<rdfs:comment>预算、地域、行业资源、父母期望等真实约束的载体。</rdfs:comment>
</owl:Class>
<owl:Class rdf:about="#Parent">
<rdfs:label>家长</rdfs:label>
</owl:Class>
<owl:Class rdf:about="#GaokaoScore">
<rdfs:label>高考成绩</rdfs:label>
<rdfs:comment>分数、位次、省份、年份,决定可选域。</rdfs:comment>
</owl:Class>
<owl:Class rdf:about="#SubjectSelection">
<rdfs:label>选科组合</rdfs:label>
<rdfs:comment>如 物理类:物理+化学+生物。</rdfs:comment>
</owl:Class>
<owl:Class rdf:about="#ConsultSession">
<rdfs:label>追问会话</rdfs:label>
<rdfs:comment>grill 动态追问引擎的一次完整会话,含槽位状态。</rdfs:comment>
</owl:Class>
<owl:Class rdf:about="#GrillQuestion">
<rdfs:label>追问问题</rdfs:label>
<rdfs:comment>问题库中按画像分层的问题,可被错误信号触发。</rdfs:comment>
</owl:Class>
<owl:Class rdf:about="#CommonError">
<rdfs:label>常见错误</rdfs:label>
<rdfs:comment>刘校错误清单中的条目,如"听说 XX 专业好就业"的盲从。</rdfs:comment>
</owl:Class>
<owl:Class rdf:about="#StudentProfile">
<rdfs:label>学生画像</rdfs:label>
<rdfs:comment>追问产出:专业认知/能力偏好/家庭约束/目标假设四层结构化字段。</rdfs:comment>
</owl:Class>
<owl:Class rdf:about="#MatchReport">
<rdfs:label>评估报告</rdfs:label>
<rdfs:comment>专业×个人匹配度与风险提示。</rdfs:comment>
</owl:Class>
<owl:Class rdf:about="#VolunteerForm">
<rdfs:label>志愿表</rdfs:label>
<rdfs:comment>某省份某年份的完整志愿列表(如 96 个志愿,含冲稳保梯度)。</rdfs:comment>
</owl:Class>
<owl:Class rdf:about="#VolunteerEntry">
<rdfs:label>志愿条目</rdfs:label>
<rdfs:comment>志愿表中的一个有序条目,指向一个院校专业组。</rdfs:comment>
</owl:Class>
<owl:Class rdf:about="#University">
<rdfs:label>院校</rdfs:label>
</owl:Class>
<owl:Class rdf:about="#MajorGroup">
<rdfs:label>院校专业组</rdfs:label>
<rdfs:comment>招生投档的基本单位,含选科要求与招生计划。</rdfs:comment>
</owl:Class>
<owl:Class rdf:about="#Major">
<rdfs:label>专业</rdfs:label>
<rdfs:comment>培养方向、就业出口、学制学费。</rdfs:comment>
</owl:Class>
<owl:Class rdf:about="#CaseRecord">
<rdfs:label>案例记录</rdfs:label>
<rdfs:comment>一次完整服务的沉淀:画像+追问过程+匹配结论。数据飞轮的燃料。</rdfs:comment>
</owl:Class>
<owl:Class rdf:about="#TrackingResult">
<rdfs:label>追踪结果</rdfs:label>
<rdfs:comment>入学 4 年后的真实去向回访,用于校准匹配规则。</rdfs:comment>
</owl:Class>
<!-- ==================== 二、对象属性(关系) ==================== -->
<owl:ObjectProperty rdf:about="#belongsToFamily">
<rdfs:label>属于家庭</rdfs:label>
<rdfs:domain rdf:resource="#Student"/>
<rdfs:range rdf:resource="#Family"/>
</owl:ObjectProperty>
<owl:ObjectProperty rdf:about="#hasMember">
<rdfs:label>包含成员</rdfs:label>
<rdfs:domain rdf:resource="#Family"/>
<rdfs:range rdf:resource="#Parent"/>
</owl:ObjectProperty>
<owl:ObjectProperty rdf:about="#hasScore">
<rdfs:label>取得成绩</rdfs:label>
<rdfs:domain rdf:resource="#Student"/>
<rdfs:range rdf:resource="#GaokaoScore"/>
</owl:ObjectProperty>
<owl:ObjectProperty rdf:about="#selectedSubjects">
<rdfs:label>选科为</rdfs:label>
<rdfs:domain rdf:resource="#Student"/>
<rdfs:range rdf:resource="#SubjectSelection"/>
</owl:ObjectProperty>
<owl:ObjectProperty rdf:about="#hasConsultSession">
<rdfs:label>参加会话</rdfs:label>
<rdfs:domain rdf:resource="#Student"/>
<rdfs:range rdf:resource="#ConsultSession"/>
</owl:ObjectProperty>
<owl:ObjectProperty rdf:about="#askedIn">
<rdfs:label>提问于</rdfs:label>
<rdfs:domain rdf:resource="#GrillQuestion"/>
<rdfs:range rdf:resource="#ConsultSession"/>
</owl:ObjectProperty>
<owl:ObjectProperty rdf:about="#triggeredBy">
<rdfs:label>由错误触发</rdfs:label>
<rdfs:domain rdf:resource="#GrillQuestion"/>
<rdfs:range rdf:resource="#CommonError"/>
</owl:ObjectProperty>
<owl:ObjectProperty rdf:about="#flagsError">
<rdfs:label>标记错误风险</rdfs:label>
<rdfs:domain rdf:resource="#ConsultSession"/>
<rdfs:range rdf:resource="#CommonError"/>
</owl:ObjectProperty>
<owl:ObjectProperty rdf:about="#generatesProfile">
<rdfs:label>生成画像</rdfs:label>
<rdfs:domain rdf:resource="#ConsultSession"/>
<rdfs:range rdf:resource="#StudentProfile"/>
</owl:ObjectProperty>
<owl:ObjectProperty rdf:about="#generatesReport">
<rdfs:label>生成报告</rdfs:label>
<rdfs:domain rdf:resource="#ConsultSession"/>
<rdfs:range rdf:resource="#MatchReport"/>
</owl:ObjectProperty>
<owl:ObjectProperty rdf:about="#fillsForm">
<rdfs:label>填写志愿表</rdfs:label>
<rdfs:domain rdf:resource="#Student"/>
<rdfs:range rdf:resource="#VolunteerForm"/>
</owl:ObjectProperty>
<owl:ObjectProperty rdf:about="#guidedBy">
<rdfs:label>受指导于</rdfs:label>
<rdfs:domain rdf:resource="#VolunteerForm"/>
<rdfs:range rdf:resource="#MatchReport"/>
</owl:ObjectProperty>
<owl:ObjectProperty rdf:about="#containsEntry">
<rdfs:label>包含志愿</rdfs:label>
<rdfs:domain rdf:resource="#VolunteerForm"/>
<rdfs:range rdf:resource="#VolunteerEntry"/>
</owl:ObjectProperty>
<owl:ObjectProperty rdf:about="#targetsGroup">
<rdfs:label>指向专业组</rdfs:label>
<rdfs:domain rdf:resource="#VolunteerEntry"/>
<rdfs:range rdf:resource="#MajorGroup"/>
</owl:ObjectProperty>
<owl:ObjectProperty rdf:about="#includesMajor">
<rdfs:label>包含专业</rdfs:label>
<rdfs:domain rdf:resource="#MajorGroup"/>
<rdfs:range rdf:resource="#Major"/>
</owl:ObjectProperty>
<owl:ObjectProperty rdf:about="#offeredBy">
<rdfs:label>隶属于院校</rdfs:label>
<rdfs:domain rdf:resource="#MajorGroup"/>
<rdfs:range rdf:resource="#University"/>
</owl:ObjectProperty>
<owl:ObjectProperty rdf:about="#recordedAs">
<rdfs:label>沉淀为案例</rdfs:label>
<rdfs:domain rdf:resource="#ConsultSession"/>
<rdfs:range rdf:resource="#CaseRecord"/>
</owl:ObjectProperty>
<owl:ObjectProperty rdf:about="#hasTracking">
<rdfs:label>产生追踪</rdfs:label>
<rdfs:domain rdf:resource="#CaseRecord"/>
<rdfs:range rdf:resource="#TrackingResult"/>
</owl:ObjectProperty>
<!-- 语义约束示例:每个志愿条目指向且仅指向一个专业组 -->
<owl:Class rdf:about="#VolunteerEntry">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#targetsGroup"/>
<owl:qualifiedCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">1</owl:qualifiedCardinality>
<owl:onClass rdf:resource="#MajorGroup"/>
</owl:Restriction>
</rdfs:subClassOf>
</owl:Class>
<!-- 语义约束示例:每个专业组隶属于且仅隶属于一个院校 -->
<owl:Class rdf:about="#MajorGroup">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#offeredBy"/>
<owl:qualifiedCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">1</owl:qualifiedCardinality>
<owl:onClass rdf:resource="#University"/>
</owl:Restriction>
</rdfs:subClassOf>
</owl:Class>
<!-- ==================== 三、数据属性 ==================== -->
<owl:DatatypeProperty rdf:about="#caseId">
<rdfs:label>案例编号</rdfs:label><rdfs:domain rdf:resource="#Student"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:about="#examScore">
<rdfs:label>高考分数</rdfs:label><rdfs:domain rdf:resource="#GaokaoScore"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#integer"/>
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:about="#rank">
<rdfs:label>位次</rdfs:label><rdfs:domain rdf:resource="#GaokaoScore"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#integer"/>
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:about="#province">
<rdfs:label>省份</rdfs:label><rdfs:domain rdf:resource="#GaokaoScore"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:about="#combo">
<rdfs:label>选科组合串</rdfs:label><rdfs:domain rdf:resource="#SubjectSelection"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:about="#budgetRange">
<rdfs:label>预算区间</rdfs:label><rdfs:domain rdf:resource="#Family"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:about="#parentExpectation">
<rdfs:label>父母期望</rdfs:label><rdfs:domain rdf:resource="#Parent"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:about="#entryIndex">
<rdfs:label>志愿序号</rdfs:label><rdfs:domain rdf:resource="#VolunteerEntry"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#integer"/>
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:about="#tier">
<rdfs:label>冲稳保梯度</rdfs:label><rdfs:domain rdf:resource="#VolunteerEntry"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:about="#matchScore">
<rdfs:label>匹配度</rdfs:label><rdfs:domain rdf:resource="#MatchReport"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#decimal"/>
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:about="#errorSignal">
<rdfs:label>错误信号</rdfs:label><rdfs:domain rdf:resource="#CommonError"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:about="#trackingOutcome">
<rdfs:label>真实去向</rdfs:label><rdfs:domain rdf:resource="#TrackingResult"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:about="#year">
<rdfs:label>年份</rdfs:label><rdfs:domain rdf:resource="#VolunteerForm"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#integer"/>
</owl:DatatypeProperty>
<!-- ==================== 四、实例(脱敏示例事实) ==================== -->
<owl:NamedIndividual rdf:about="#StudentA2026">
<rdf:type rdf:resource="#Student"/>
<rdfs:label>案例A(2026·已脱敏)</rdfs:label>
<belongsToFamily rdf:resource="#FamilyA"/>
<hasScore rdf:resource="#ScoreA2026"/>
<selectedSubjects rdf:resource="#SelA"/>
<hasConsultSession rdf:resource="#SessionA1"/>
<fillsForm rdf:resource="#FormA2026"/>
</owl:NamedIndividual>
<owl:NamedIndividual rdf:about="#FamilyA">
<rdf:type rdf:resource="#Family"/>
<rdfs:label>案例A家庭</rdfs:label>
<budgetRange>学费 8000-15000 元/年可接受</budgetRange>
<hasMember rdf:resource="#ParentA1"/>
</owl:NamedIndividual>
<owl:NamedIndividual rdf:about="#ParentA1">
<rdf:type rdf:resource="#Parent"/>
<parentExpectation>希望孩子学医或师范,求稳定</parentExpectation>
</owl:NamedIndividual>
<owl:NamedIndividual rdf:about="#ScoreA2026">
<rdf:type rdf:resource="#GaokaoScore"/>
<examScore rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">585</examScore>
<rank rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">21000</rank>
<province>湖南</province>
</owl:NamedIndividual>
<owl:NamedIndividual rdf:about="#SelA">
<rdf:type rdf:resource="#SubjectSelection"/>
<combo>物理+化学+生物</combo>
</owl:NamedIndividual>
<owl:NamedIndividual rdf:about="#ErrorBlindFollow">
<rdf:type rdf:resource="#CommonError"/>
<rdfs:label>盲从热门专业</rdfs:label>
<errorSignal>答"听说好就业/别人都报"</errorSignal>
</owl:NamedIndividual>
<owl:NamedIndividual rdf:about="#SessionA1">
<rdf:type rdf:resource="#ConsultSession"/>
<rdfs:label>案例A首次追问会话</rdfs:label>
<flagsError rdf:resource="#ErrorBlindFollow"/>
<generatesProfile rdf:resource="#ProfileA"/>
<generatesReport rdf:resource="#ReportA"/>
<recordedAs rdf:resource="#CaseA"/>
</owl:NamedIndividual>
<owl:NamedIndividual rdf:about="#ProfileA">
<rdf:type rdf:resource="#StudentProfile"/>
<rdfs:label>案例A画像:专业认知浅+动手能力强+家庭求稳</rdfs:label>
</owl:NamedIndividual>
<owl:NamedIndividual rdf:about="#ReportA">
<rdf:type rdf:resource="#MatchReport"/>
<matchScore rdf:datatype="http://www.w3.org/2001/XMLSchema#decimal">82.5</matchScore>
</owl:NamedIndividual>
<owl:NamedIndividual rdf:about="#FormA2026">
<rdf:type rdf:resource="#VolunteerForm"/>
<year rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">2026</year>
<guidedBy rdf:resource="#ReportA"/>
<containsEntry rdf:resource="#EntryA1"/>
<containsEntry rdf:resource="#EntryA45"/>
</owl:NamedIndividual>
<owl:NamedIndividual rdf:about="#EntryA1">
<rdf:type rdf:resource="#VolunteerEntry"/>
<entryIndex rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">1</entryIndex>
<tier>冲</tier>
<targetsGroup rdf:resource="#GroupX"/>
</owl:NamedIndividual>
<owl:NamedIndividual rdf:about="#EntryA45">
<rdf:type rdf:resource="#VolunteerEntry"/>
<entryIndex rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">45</entryIndex>
<tier>保</tier>
<targetsGroup rdf:resource="#GroupY"/>
</owl:NamedIndividual>
<owl:NamedIndividual rdf:about="#GroupX">
<rdf:type rdf:resource="#MajorGroup"/>
<rdfs:label>示例院校专业组X(临床医学类)</rdfs:label>
<includesMajor rdf:resource="#MajorClinicalMed"/>
<offeredBy rdf:resource="#UnivX"/>
</owl:NamedIndividual>
<owl:NamedIndividual rdf:about="#GroupY">
<rdf:type rdf:resource="#MajorGroup"/>
<rdfs:label>示例院校专业组Y(电子信息类)</rdfs:label>
<includesMajor rdf:resource="#MajorEE"/>
<offeredBy rdf:resource="#UnivY"/>
</owl:NamedIndividual>
<owl:NamedIndividual rdf:about="#MajorClinicalMed">
<rdf:type rdf:resource="#Major"/><rdfs:label>临床医学</rdfs:label>
</owl:NamedIndividual>
<owl:NamedIndividual rdf:about="#MajorEE">
<rdf:type rdf:resource="#Major"/><rdfs:label>电子信息工程</rdfs:label>
</owl:NamedIndividual>
<owl:NamedIndividual rdf:about="#UnivX">
<rdf:type rdf:resource="#University"/><rdfs:label>示例医科大学</rdfs:label>
</owl:NamedIndividual>
<owl:NamedIndividual rdf:about="#UnivY">
<rdf:type rdf:resource="#University"/><rdfs:label>示例理工院校</rdfs:label>
</owl:NamedIndividual>
<owl:NamedIndividual rdf:about="#CaseA">
<rdf:type rdf:resource="#CaseRecord"/>
<rdfs:label>案例A沉淀记录</rdfs:label>
<hasTracking rdf:resource="#TrackingA2030"/>
</owl:NamedIndividual>
<owl:NamedIndividual rdf:about="#TrackingA2030">
<rdf:type rdf:resource="#TrackingResult"/>
<trackingOutcome>待回访(2030 年毕业去向校准)</trackingOutcome>
</owl:NamedIndividual>
</rdf:RDF>
这份文件交付给任何支持 OWL 的 agent(Codex / TreeWork / WorkBuddy 等),agent 即获得完整的业务上下文——它能沿 Student → belongsToFamily → Family.budgetRange 找到预算约束,沿 VolunteerEntry → targetsGroup → MajorGroup → includesMajor 解释任何一个志愿为什么这么填。

7. 方法论沉淀:从电商客服到志愿填报(任务⑤)
把两个案例并排放,可复用的规律就浮出来了:
| 维度 | 电商客服查订单(原笔记案例) | 高考志愿填报(本案例) |
|---|---|---|
| 核心链路 | 客户→订单→包裹→物流事件 | 学生→追问→画像→匹配→志愿表→专业组 |
| 事实来源 | 出库记录、交接单、签收单 | 历史案例 xlsx、评估报告、口述经验 |
| 关键拆分 | 订单拆分为多个包裹 | 志愿表拆分为 96 个有序条目 |
| 领域特有实体 | 物流事件 | 案例库 + 追踪结果(飞轮) |
| 人工确认重点 | 订单-客户的对应关系 | 家庭约束实体化、错误清单条目 |
| 语义约束示例 | — | 每条目恰指一个专业组 |
抽出的五步通用流程:
- 读资料建理解——agent 通读全部资料,矛盾之处列出来不许猜;
- 出模型候选——对象/属性/关系三件套表格化,附原文依据;
- 逐组人工确认——领域专家(刘校)把关每一组,这一步决定本体质量上限;
- 带证据提事实——每条事实可回溯到文件与页码,脱敏先行;
- 同文件出 OWL 并验证——模型与事实写进同一个文件,语法 + 一致性 + 完整性三重自检。
何时该重修本体(三条判据):① 实体的身份规则变了(如考生从"一案一号"改为"跨年跟踪同一人");② 出现新的一等实体(如新增"复读记录");③ 关系语义改变(如专业组改为"专业+院校"双轨)。除此之外,只往里追加实例即可,骨架不必动。
8. 结语
- FDE 是连接大模型与企业落地的桥梁,核心能力就是构建业务本体;
- 本体通过对象、属性、关系、约束,把零散数据变成 agent 可导航的关系网;
- 三个 skill(ontology design / 提取事实 / 本体生成与验证)+ 人工逐组确认,是当前效率最高的构建路径;
- 本体的终极形态不是静态文件,而是数据飞轮:每一次真实服务都让它更准一点——这对志愿填报这类"结果延迟 4 年才揭晓"的业务尤其值钱。
原笔记:FDE 系列第二场内部分享。实战案例:瑟谷智学 × 刘校高考志愿填报项目(实例数据已脱敏)。OWL 文件与概念图可直接复用于同类咨询类业务(留学规划、职业转型、考研择校——结构同构,换词即可)。