AI 新风口 FDE:打通业务与技术(第二场)——附高考志愿填报项目本体构建实战

周店瑟谷 2 阅读 【Method】AI方法得当

本文原是一场内部分享的听课笔记(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 本体包含的两类内容

  1. 业务模型定义(Schema):类型、属性、关系和语义约束——"规则长什么样"。
  2. 具体实例事实(Facts):模型下的实际数据——"具体是谁、发生了什么"。

注意:这里的"模型"指业务模型,不是大语言模型。

2.2 四个基本构件

  • 对象:某类实体或事件——客户、订单、学生、专业组。
  • 属性:对象的特征——姓名、分数、预算区间。
  • 关系(Link Type):对象间有明确意义的连接——"任职于""选修""包含"。
  • 实例:对象的实际数据——"王敏是员工对象的实例,通过'任职于'连接研发部"。

同一个名称在不同领域含义不同(人资领域的"王敏"是员工,教育领域可能是学生),所以本体必须绑定具体业务领域。

本体关系网示例:客户→订单→包裹→物流事件

2.3 构建 Schema 前要明确的五件事

  1. 类型与层级;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:设计 → 提取 → 生成验证

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 解释任何一个志愿为什么这么填。

OWL 文件输出效果


7. 方法论沉淀:从电商客服到志愿填报(任务⑤)

把两个案例并排放,可复用的规律就浮出来了:

维度 电商客服查订单(原笔记案例) 高考志愿填报(本案例)
核心链路 客户→订单→包裹→物流事件 学生→追问→画像→匹配→志愿表→专业组
事实来源 出库记录、交接单、签收单 历史案例 xlsx、评估报告、口述经验
关键拆分 订单拆分为多个包裹 志愿表拆分为 96 个有序条目
领域特有实体 物流事件 案例库 + 追踪结果(飞轮)
人工确认重点 订单-客户的对应关系 家庭约束实体化、错误清单条目
语义约束示例 — 每条目恰指一个专业组

抽出的五步通用流程:

  1. 读资料建理解——agent 通读全部资料,矛盾之处列出来不许猜;
  2. 出模型候选——对象/属性/关系三件套表格化,附原文依据;
  3. 逐组人工确认——领域专家(刘校)把关每一组,这一步决定本体质量上限;
  4. 带证据提事实——每条事实可回溯到文件与页码,脱敏先行;
  5. 同文件出 OWL 并验证——模型与事实写进同一个文件,语法 + 一致性 + 完整性三重自检。

何时该重修本体(三条判据):① 实体的身份规则变了(如考生从"一案一号"改为"跨年跟踪同一人");② 出现新的一等实体(如新增"复读记录");③ 关系语义改变(如专业组改为"专业+院校"双轨)。除此之外,只往里追加实例即可,骨架不必动。


8. 结语

  • FDE 是连接大模型与企业落地的桥梁,核心能力就是构建业务本体;
  • 本体通过对象、属性、关系、约束,把零散数据变成 agent 可导航的关系网;
  • 三个 skill(ontology design / 提取事实 / 本体生成与验证)+ 人工逐组确认,是当前效率最高的构建路径;
  • 本体的终极形态不是静态文件,而是数据飞轮:每一次真实服务都让它更准一点——这对志愿填报这类"结果延迟 4 年才揭晓"的业务尤其值钱。

原笔记:FDE 系列第二场内部分享。实战案例:瑟谷智学 × 刘校高考志愿填报项目(实例数据已脱敏)。OWL 文件与概念图可直接复用于同类咨询类业务(留学规划、职业转型、考研择校——结构同构,换词即可)。