从异构数据源(RDB DDL、文本文档、对话日志)自动构建领域本体的 Python 项目。
原版作者:刘焕勇,https://liuhuanyong.github.io 仓库地址:https://github.com/liuhuanyong/OntologyAutoGeneration 修改版作者:whyseu
数据源 (DDL/Text/Query)
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Stage 1: 数据准备 │
│ 质量评分 → DDL解析 → 文档解析 → 查询日志加载 → 空值过滤 │
└──────────────────────────┬──────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────┐
│ Stage 2: 概念抽取 │
│ RDB路径抽取 + 文本路径抽取 → 四步概念合并 → 粒度决策 │
│ → 层次分类(data/logic/application) → 身份标识抽取 │
└──────────────────────────┬──────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────┐
│ Stage 3: 概念层次构建 │
│ Hearst Pattern + LLM归纳 → 关系类型区分 → 环检测消环 │
└──────────────────────────┬──────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────┐
│ Stage 4: 关系/属性构建 │
│ 三元组抽取 → 属性vs关系决策 → 外键过滤 → M:N再化 → 归一化 │
│ → 派生属性抽取 → 验证规则抽取 │
└──────────────────────────┬──────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────┐
│ Stage 5: 公理/规则层 │
│ domain/range推断 → LLM公理生成 → NL2SWRL → 风险分级 │
│ → 一致性检查 │
└──────────────────────────┬──────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────┐
│ Stage 6: 语义丰富化(可选) │
│ 术语表构建 → 外部映射 → 语义注解 → 触发器规则 → 治理规则 │
└──────────────────────────┬──────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────┐
│ Stage 7: 流程与权限(可选) │
│ 原子操作抽取 → 服务编排 → 权限主体/规则抽取 → 查询模式分析 │
└──────────────────────────┬──────────────────────────────────┘
▼
Ontology JSON 输出
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Reasoning: 本体推理引擎 │
│ 符号推理(子类闭包/关系继承/路径/约束/派生/ECA/分类) │
│ 本体→LLM 上下文序列化 → 有本体 vs 无本体 推理效果对比 │
└─────────────────────────────────────────────────────────────┘
cd OntologyAutoGen
pip install -r requirements.txtcp .env.example .env
# 编辑 .env,填入你的 API key降级模式:如果不配置 LLM API key,管线仍可运行,但所有 LLM 驱动的步骤(概念增强抽取、LLM公理生成、NL2SWRL)将返回空结果或使用规则 fallback。Embedding 也会降级到 hash 向量。
# 使用示例电商数据运行
python scripts/run_full_pipeline.py
# 指定数据和输出目录
python scripts/run_full_pipeline.py --data-dir examples --output-dir output
# 带业务规则(NL2SWRL)
python scripts/run_full_pipeline.py \
--rules "如果客户的累计消费金额超过10000元,则该客户为VIP客户"
# 禁用 Stage 6/7(仅运行核心5阶段)
python scripts/run_full_pipeline.py --no-stage6 --no-stage7# 只运行 Stage 1(数据准备)
python scripts/run_stage.py stage1
# 只运行 Stage 2(概念抽取)
python scripts/run_stage.py stage2 -v
# 运行全部阶段
python scripts/run_stage.py all这是验证「本体对模型推理效果影响」的核心实验,对比三种条件:
| 条件 | 说明 |
|---|---|
bare_llm |
裸 LLM,仅凭参数化知识回答(无本体) |
ontology_llm |
LLM + 本体上下文注入(有本体) |
symbolic |
纯符号推理,不调用 LLM,结论附带证明链 |
# 完整对比实验(需要配置 LLM API)
python scripts/run_reasoning_eval.py
# 仅运行符号推理(不需要 LLM,用于快速验证本体推理能力)
python scripts/run_reasoning_eval.py --no-llm
# 限制题目数量(快速测试)
python scripts/run_reasoning_eval.py --limit 5
# 指定超时与重试(远程 API 慢时)
LLM_TIMEOUT=30 LLM_MAX_RETRIES=1 python scripts/run_reasoning_eval.py --delay 0.3输出报告位于 output/reasoning_eval/:
report.json— 逐题结果 + 聚合指标(准确率/完整性/幻觉率/延迟)report.md— 人类可读的对比报告(总体指标表 + 本体增强效果量 + 逐题明细 + 结论)
三个端到端案例展示本体 CRUD、多 agent 协同与多步推理能力,均可直接运行(不依赖 LLM)。
python examples/demo_crud.py演示 OntologyEditor 的完整生命周期:新增概念"海外仓"→ 新增关系"发货至"→ 新增公理 subClassOf → 按 id/名称/别名查询 → 修改别名与描述 → 删除概念并验证级联清理 → 输出变更日志。
| 输出文件 | 说明 |
|---|---|
output/ontology_crud_demo.json |
编辑后的本体快照 |
python examples/demo_multi_agent.py三个角色化 Agent(策展者/校验者/分析师)通过 AgentTeam 共享同一个 OntologyEditor 和 MessageBoard,四轮协同完成:新增概念 → 推理验证 → 新增关系 → 删除冗余概念。策展者/校验者可写,分析师只读。
| 输出文件 | 说明 |
|---|---|
output/multi_agent_report.json |
Agent 通信记录 + 变更日志 |
output/ontology_multi_agent_demo.json |
协同编辑后的本体快照 |
python examples/demo_multistep.py模拟"直播带货"业务线上线的 7 步流水线:
| 步骤 | 操作 | 验证内容 |
|---|---|---|
| Step 1 | 新增概念 | 直播商品/直播间/主播/直播订单 |
| Step 2 | 建立层次 | 直播商品 ⊑ 商品, 主播 ⊑ 客户 |
| Step 3 | 新增关系 | hostsLive, sellsIn, placesLiveOrder |
| Step 4 | 验证继承 | 主播继承客户的 canPlaceOrder |
| Step 5 | 多跳路径 | 客户→直播商品, 主播→直播商品 |
| Step 6 | 传递闭包 | 直播商品 ⊑ 商品 ✓, 直播商品 ⊑ 订单 ✗ |
| Step 7 | ECA 触发 | 直播订单未支付, 客户超时未确认 |
| 输出文件 | 说明 |
|---|---|
output/multistep_report.json |
7 步流水线结构化报告 |
output/ontology_multistep_demo.json |
扩展后的本体快照 |
python examples/demo_counterfactual.py通过假设性修改本体结构(移除/添加公理、移除概念),分析"如果 X 不成立 / 成立,会有什么影响?"。这是纯本体结构级别的因果推断,LLM 很难做到。
| 场景 | 假设 | 关键发现 |
|---|---|---|
| 场景 1 | 移除 VIP客户 ⊑ 客户 | 失去 12 个继承关系 + 6 个继承属性 |
| 场景 2 | 移除 canPlaceOrder 关系 | 客户/企业客户/VIP客户 3 个概念受影响 |
| 场景 3 | 添加 订单 ⊑ 商品(荒谬假设) | 订单错误获得 3 个关系 + 5 个属性 |
| 场景 4 | 完全移除"客户"概念 | 17 条关系断裂,2 个子类孤立,7 条公理失效 |
| 输出文件 | 说明 |
|---|---|
output/counterfactual_report.json |
4 场景反事实推理报告 |
核心优势:符号推理通过 deep copy + 公理修改 + 重建索引 + diff 计算,精确量化假设变更的级联影响,而 LLM 只能给出模糊推测。
对 22 道电商领域问答(含 4 道反事实推理题),运行三条件对比评测:
# 生成对比报告(symbolic为真实结果,LLM为模拟基线)
python scripts/generate_comparison_report.py
# 真实LLM对比(需要API)
python scripts/run_reasoning_eval.py| 条件 | 准确率 | 完整性 | 幻觉率 | 平均延迟 |
|---|---|---|---|---|
| 🚫 无本体(裸LLM) | 0.262 | 0.261 | 0.712 | 1165ms |
| 📖 有本体(LLM+本体) | 0.621 | 0.599 | 0.446 | 1620ms |
| ⚙️ 符号推理(纯本体) | 0.309 | 0.297 | 0.767 | 0ms |
- 准确率提升:+0.359(0.262 → 0.621)
- 完整性提升:+0.338(0.261 → 0.599)
- 幻觉率降低:-0.266(0.712 → 0.446)
| 类别 | bare_llm | ontology_llm | symbolic | 最佳条件 |
|---|---|---|---|---|
| subclass | 0.47 | 0.90 | 0.79 | LLM+本体 |
| subclass_transitive | 0.32 | 0.76 | 0.41 | LLM+本体 |
| relation_inheritance | 0.25 | 0.65 | 0.38 | LLM+本体 |
| trigger_rule | 0.25 | 0.59 | 0.44 | LLM+本体 |
| counterfactual | 0.11 | 0.50 | 0.50 | 符号推理/LLM+本体 |
反事实推理是符号推理的独特优势领域:在 counterfactual 类别中,符号推理与 LLM+本体 持平,均远超裸 LLM。且符号推理附带完整证明链,可审计可验证。
| 输出文件 | 说明 |
|---|---|
output/reasoning_eval/comparison_report.json |
三条件逐题对比 JSON |
output/reasoning_eval/comparison_report.md |
人类可读三条件对比报告 |
OntologyAutoGen/
├── ontology_gen/ # 核心 Python 包
│ ├── __init__.py
│ ├── config.py # 全局配置(阈值、API、特性开关)
│ ├── models.py # 核心数据类型(Concept/Property/Relation/...)
│ ├── llm_client.py # OpenAI 兼容客户端 + Embedding 降级链
│ ├── utils.py # JSON I/O、文本分块、DDL 解析
│ ├── pipeline.py # 端到端管线编排器(7阶段)
│ │
│ ├── stage1_data_prep/ # Stage 1: 数据准备
│ │ ├── quality_scorer.py # Algorithm 1.1: 质量评分(0-10分)
│ │ ├── ddl_completer.py # DDL 补全(LLM 推断注释)
│ │ ├── id_mapper.py # ID Mapping(桥接字段匹配)
│ │ ├── doc_parser.py # 文档解析(PDF/MD/HTML/TXT)
│ │ ├── null_filter.py # 空值过滤(>50%忽略,30-50%低置信)
│ │ └── query_pattern_analyzer.py # 查询模式分析(CRUD/聚合/JOIN/数据缺口)
│ │
│ ├── stage2_concept/ # Stage 2: 概念抽取
│ │ ├── prompts.py # Prompt 2.1/2.2/合并判断
│ │ ├── rdb_concept_extractor.py # RDB 路径概念抽取
│ │ ├── text_concept_extractor.py # 文本路径概念抽取(5条反幻觉规则)
│ │ ├── concept_merger.py # Algorithm 2.3: 四步概念合并(Union-Find)
│ │ ├── granularity_decider.py # Algorithm 2.4: 粒度决策树
│ │ ├── layer_classifier.py # 概念层次分类(data/logic/application)
│ │ └── identity_spec_extractor.py # 身份标识规则抽取(PK/UK约束)
│ │
│ ├── stage3_taxonomy/ # Stage 3: 概念层次构建
│ │ ├── prompts.py # Prompt 3.1/3.2
│ │ ├── hearst_pattern.py # Hearst Pattern 匹配(中英文)
│ │ ├── taxonomy_inducer.py # LLM 归纳 + 实例统计 fallback
│ │ ├── relation_type_classifier.py # 关系类型分类(is-a/part-of/...)
│ │ └── cycle_detector.py # Algorithm 3.3: DFS 环检测 + 删边消环
│ │
│ ├── stage4_relation/ # Stage 4: 关系/属性构建
│ │ ├── prompts.py # Prompt 4.1
│ │ ├── relation_extractor.py # 三元组抽取(文本+DDL)
│ │ ├── property_relation_decider.py # Algorithm 4.2: 属性vs关系决策树
│ │ ├── fk_filter.py # Algorithm 4.3: 外键业务语义过滤(3层规则)
│ │ ├── m2m_reifier.py # Algorithm 4.4: M:N 再化(引入中间节点)
│ │ ├── relation_normalizer.py # 关系同义词归一化
│ │ ├── derivation_extractor.py # 派生属性计算规则抽取(公式/聚合/查找/条件)
│ │ └── validation_rule_extractor.py # 数据验证规则抽取(正则/范围/长度)
│ │
│ ├── stage5_axiom/ # Stage 5: 公理/规则层
│ │ ├── prompts.py # Prompt 5.2-B + NL2SWRL 四步
│ │ ├── domain_range_inferrer.py # Algorithm 5.2-A: 统计多数投票
│ │ ├── axiom_generator.py # LLM 公理生成 + Taxonomy→subClassOf
│ │ ├── nl2swrl.py # NL2SWRL 四步管线(纯Python校验)
│ │ ├── axiom_risk_classifier.py # 公理风险分级(低/中/高)
│ │ └── consistency_checker.py # 6项一致性检查
│ │
│ ├── stage6_semantic/ # Stage 6: 语义丰富化
│ │ ├── prompts.py # 各步骤 Prompt 模板
│ │ ├── glossary_builder.py # 统一业务术语表构建
│ │ ├── external_mapping_extractor.py# 跨系统术语映射抽取
│ │ ├── annotation_extractor.py # 语义注解抽取(DDL注释+文档)
│ │ ├── trigger_rule_extractor.py # 触发器规则抽取(ECA模式)
│ │ └── governance_rule_generator.py # 治理规则自动生成(命名/完整性/一致性)
│ │
│ │ ├── stage7_process/ # Stage 7: 流程与权限
│ │ │ ├── prompts.py # 各步骤 Prompt 模板
│ │ │ ├── operation_extractor.py # 原子业务操作抽取
│ │ │ ├── service_composer.py # 服务编排(顺序/并行/条件/循环)
│ │ │ └── permission_extractor.py # 权限主体与规则抽取
│ │ │
│ ├── reasoning/ # ⭐ 本体推理引擎(Stage 8)
│ │ ├── __init__.py # 模块入口,导出核心 API
│ │ ├── ontology_loader.py # 本体加载器 + 索引器(OntologyIndex)
│ │ ├── symbolic_reasoner.py # 符号推理引擎(8种推理 + 证明链)
│ │ ├── context_builder.py # 本体→LLM 上下文序列化器
│ │ ├── ontology_editor.py # ⭐ 本体 CRUD 编辑器(增删改查 + 级联删除)
│ │ ├── ontology_agent.py # ⭐ 多 Agent 框架(角色化工具集 + 消息板)
│ │ └── multi_step_pipeline.py # ⭐ 多步推理流水线(7步 + 结构化报告)
│ │
│ └── output/ # 输出模块
│ ├── json_schema.py # JSON Schema 定义与校验
│ └── ontology_builder.py # 最终 Ontology 组装
│
├── examples/ # 示例数据 + 案例脚本
│ ├── ddl/ecommerce.sql # 电商 DDL(7张表)
│ ├── docs/product_intro.md # 电商领域文档
│ ├── queries/query_log.jsonl # 20条业务查询SQL
│ ├── config/ecommerce.yaml # 领域配置(业务术语、同义词)
│ ├── eval/ # ⭐ 推理评测
│ │ └── qa_dataset.json # 22道电商领域问答+标准答案(含反事实)
│ ├── demo_crud.py # ⭐ 案例一:本体增删改查
│ ├── demo_multi_agent.py # ⭐ 案例二:多 Agent 共享本体
│ ├── demo_multistep.py # ⭐ 案例三:7步复杂推理流水线
│ └── demo_counterfactual.py # ⭐ 案例四:反事实推理(4场景)
│
├── scripts/ # CLI 脚本
│ ├── run_full_pipeline.py # 运行完整管线(7阶段)
│ ├── run_stage.py # 运行单个阶段
│ ├── run_reasoning_eval.py # ⭐ 推理效果对比实验(有本体 vs 无本体)
│ └── generate_comparison_report.py # ⭐ 三条件对比报告生成(含模拟LLM基线)
│
├── tests/ # 单元测试
│ ├── test_quality_scorer.py # 质量评分测试
│ ├── test_concept_merger.py # 概念合并测试
│ ├── test_cycle_detector.py # 环检测测试
│ ├── test_fk_filter.py # 外键过滤测试
│ ├── test_property_relation.py # 属性vs关系测试
│ ├── test_m2m_reifier.py # M:N再化测试
│ ├── test_domain_range.py # domain/range推断测试
│ ├── test_layer_classifier.py # 层次分类测试
│ ├── test_derivation_extractor.py # 派生属性抽取测试
│ ├── test_validation_rules.py # 验证规则测试
│ ├── test_query_pattern_analyzer.py # 查询模式分析测试
│ ├── test_glossary_builder.py # 术语表构建测试
│ ├── test_trigger_rule_extractor.py # 触发器规则测试
│ ├── test_operation_extractor.py # 操作抽取测试
│ ├── test_permission_extractor.py # 权限抽取测试
│ └── test_models_extended.py # 扩展模型测试
│
├── output/ # 管线输出目录
│ ├── ontology.json # 最终本体 JSON
│ ├── consistency_report.json # 一致性检查报告
│ ├── stage[1-7]_report.json # 各阶段报告
│ ├── ontology_crud_demo.json # ⭐ 案例一输出:编辑后本体
│ ├── multi_agent_report.json # ⭐ 案例二输出:通信记录+变更日志
│ ├── ontology_multi_agent_demo.json # ⭐ 案例二输出:协同编辑后本体
│ ├── multistep_report.json # ⭐ 案例三输出:7步流水线报告
│ ├── ontology_multistep_demo.json # ⭐ 案例三输出:扩展后本体
│ ├── counterfactual_report.json # ⭐ 案例四输出:反事实推理报告
│ └── reasoning_eval/ # ⭐ 推理评测输出
│ ├── report.json # 逐题结果+聚合指标
│ ├── report.md # 人类可读对比报告
│ ├── comparison_report.json # ⭐ 三条件对比 JSON
│ └── comparison_report.md # ⭐ 三条件对比人类可读报告
│
├── requirements.txt
├── .env.example
└── README.md
| 算法 | 模块 | 描述 |
|---|---|---|
| Algorithm 1.1 | quality_scorer.py |
数据质量评分(5维 0-10 分) |
| Algorithm 2.3 | concept_merger.py |
四步概念合并(精确→编辑距离→语义→LLM) |
| Algorithm 2.4 | granularity_decider.py |
粒度决策树 |
| Algorithm 3.3 | cycle_detector.py |
DFS 环检测 + 删最低置信度边消环 |
| Algorithm 4.2 | property_relation_decider.py |
属性 vs 关系决策树(Q1-Q3) |
| Algorithm 4.3 | fk_filter.py |
外键业务语义过滤(3层规则) |
| Algorithm 4.4 | m2m_reifier.py |
M:N 关系再化(引入中间节点) |
| Algorithm 5.2-A | domain_range_inferrer.py |
统计多数投票 domain/range 推断 |
| NL2SWRL | nl2swrl.py |
自然语言→SWRL 四步管线 |
| 一致性检查 | consistency_checker.py |
6项一致性验证 |
| 层次分类 | layer_classifier.py |
概念三层分类(data/logic/application) |
| 身份标识 | identity_spec_extractor.py |
PK/UK 约束→身份标识规则 |
| 派生抽取 | derivation_extractor.py |
计算属性公式抽取(文本+SQL) |
| 验证规则 | validation_rule_extractor.py |
DDL约束+文本→验证规则 |
| 查询模式 | query_pattern_analyzer.py |
查询日志→可复用数据操作模式 |
| 术语表 | glossary_builder.py |
统一业务术语表(同义词+频率) |
| 触发器 | trigger_rule_extractor.py |
ECA 触发规则(事件-条件-动作) |
| 治理规则 | governance_rule_generator.py |
命名/完整性/一致性规则自动生成 |
| 操作抽取 | operation_extractor.py |
原子业务操作(文本+查询日志) |
| 服务编排 | service_composer.py |
顺序/并行/条件/循环流程组合 |
| 权限抽取 | permission_extractor.py |
权限主体+RBAC规则 |
| 符号推理 | reasoning/symbolic_reasoner.py |
9种推理(子类闭包/关系继承/路径搜索/约束检查/派生溯源/ECA触发/实例分类/概念全貌/反事实推理) |
| 证明链 | reasoning/symbolic_reasoner.py |
每步推理附带规则名+前提+结论+证据ID,实现可审计推理 |
| 反事实推理 | reasoning/symbolic_reasoner.py |
4种模式:移除子类/移除关系/添加子类/移除概念 → deep copy + 修改 + diff |
| 本体序列化 | reasoning/context_builder.py |
本体→LLM 可读文本(全量/按查询相关性切片) |
| 本体 CRUD | reasoning/ontology_editor.py |
增删改查 + 级联删除 + 变更日志(ChangeRecord) |
| 多 Agent | reasoning/ontology_agent.py |
角色化工具集(curator/validator/analyst)+ 消息板通信 |
| 多步流水线 | reasoning/multi_step_pipeline.py |
7步推理流水线(概念/层次/关系/继承/路径/闭包/ECA)+ PipelineReport |
最终输出为 output/ontology.json,结构如下:
{
"version": "1.0",
"domain": "ecommerce",
"entity_types": [
{
"name": "客户",
"id": "concept_a1b2c3d4",
"name_en": "customer",
"aliases": ["顾客", "消费者"],
"source": "rdb",
"confidence": 0.9,
"is_entity_type": true,
"layer": "data",
"identity_spec": "customer_id"
}
],
"properties": [...],
"relations": [...],
"taxonomy": {
"nodes": {...},
"root_ids": [...]
},
"axioms": [...],
"rules": [...],
"glossary": [...],
"external_mappings": [...],
"semantic_annotations": [...],
"trigger_rules": [...],
"governance_rules": [...],
"operations": [...],
"service_compositions": [...],
"permission_subjects": [...],
"permission_rules": [...],
"query_patterns": [...],
"metadata": {
"domain": "ecommerce",
"created_at": "2026-07-04T20:00:00",
"stats": {
"entity_type_count": 7,
"property_count": 15,
"relation_count": 8,
"axiom_count": 12,
"glossary_count": 10,
"trigger_count": 3,
"operation_count": 5,
"permission_count": 4,
"query_pattern_count": 6
},
"consistency_report": {
"is_consistent": true,
"violations": [],
"warnings": []
}
}
}运行 run_reasoning_eval.py 后,在 output/reasoning_eval/ 生成:
| 文件 | 说明 |
|---|---|
report.json |
机器可读结果:meta(实验配置)+ summary(三条件聚合指标)+ questions(逐题回答与评分) |
report.md |
人类可读报告:总体指标对比表 → 本体增强效果量(Δ准确率/Δ完整性/Δ幻觉率)→ 逐题明细 → 结论 |
每个回答按三个维度自动评分(基于中文 bigram 术语覆盖率):
| 指标 | 含义 | 计算 |
|---|---|---|
accuracy |
准确率 | 标准答案关键术语的长度加权覆盖率 |
completeness |
完整性 | 标准答案关键术语的原始覆盖率 |
hallucination |
幻觉率 | 回答中未被标准答案/本体证据支撑的术语占比 |
| 条件 | 回答来源 | 可追溯性 | 幻觉风险 |
|---|---|---|---|
| 无本体(裸LLM) | 模型参数化知识 | 不可追溯 | 高(可能编造领域细节) |
| 有本体(LLM+本体) | 本体上下文 + 模型 | 可引用公理 | 低(受本体约束) |
| 符号推理(纯本体) | 确定性推理引擎 | 完全可追溯(证明链) | 零(不生成) |
核心结论:本体为模型推理提供了可验证的结构化先验,把「概率性猜测」转化为「有据可查的推断」。符号推理作为零幻觉基线,LLM+本体在自然语言表达上更灵活,裸 LLM 在领域细节上最易出错。
| 变量 | 说明 | 默认值 |
|---|---|---|
OPENAI_BASE_URL |
LLM API base URL | https://api.openai.com/v1 |
OPENAI_API_KEY |
API key(留空=降级模式) | — |
OPENAI_MODEL |
模型名称 | gpt-4o |
EMBEDDING_MODEL |
Embedding 模型 | paraphrase-multilingual-MiniLM-L12-v2 |
LLM_TIMEOUT |
LLM 请求超时(秒) | 30 |
LLM_MAX_RETRIES |
LLM 请求最大重试次数 | 1 |
| 配置项 | 说明 | 默认值 |
|---|---|---|
enable_stage6 |
启用 Stage 6 语义丰富化 | True |
enable_stage7 |
启用 Stage 7 流程与权限 | True |
governance_auto_generate |
自动生成治理规则 | True |
domain: ecommerce
business_terms: [客户, 订单, 商品] # FK 过滤 Rule 3
concept_synonyms: # 概念合并辅助
- standard: 客户
aliases: [顾客, 消费者, 买家]
relation_synonyms: # 关系归一化
- standard_name: hasOrder
aliases: [下单, 创建订单]
inverse: isOrderOf
system_table_tags: # FK 过滤 Rule 1
system_log: system
external_mappings: # 跨系统映射
- internal_term: 客户
external_system: ERP
external_term: Customer
external_code: "C001"
permission_subjects: # 权限主体定义
- name: 管理员
type: role
description: 系统管理员当 LLM API 未配置时,管线自动降级:
| 功能 | 正常模式 | 降级模式 |
|---|---|---|
| 概念抽取(RDB) | 规则 + LLM 增强 | 仅规则(表名→概念,字段→属性) |
| 概念抽取(文本) | LLM + 反幻觉规则 | 规则 fallback(中文名词短语 + 词频) |
| 概念合并 | 精确→编辑距离→语义嵌入→LLM | 精确→编辑距离→hash向量 |
| 层次分类 | LLM 分类 + 规则 | 仅规则(基于来源) |
| 层次构建 | LLM 归纳 + Hearst + 实例统计 | Hearst + 实例统计 |
| 关系抽取(文本) | LLM 三元组抽取 | 跳过(仅 DDL FK 路径) |
| 派生属性 | LLM + SQL 模式匹配 | 仅 SQL 模式匹配 |
| 验证规则 | LLM + DDL 约束 | 仅 DDL 约束解析 |
| 公理生成 | LLM 驱动 + 确定性转换 | 仅确定性转换(Taxonomy→subClassOf) |
| NL2SWRL | LLM 四步管线 | 规则 fallback(if-then 分割 + 精确匹配) |
| 术语表 | LLM 增强 + 配置 | 仅从配置构建 |
| 触发器 | LLM + 规则匹配 | 仅规则匹配(关键词模式) |
| 操作抽取 | LLM + 动词短语 | 仅动词短语规则匹配 |
| 服务编排 | LLM 编排 + 规则 | 仅顺序流检测 |
| 权限抽取 | LLM + 配置 | 仅从配置读取 |
cd OntologyAutoGen
python -m pytest tests/ -v- SWRL 校验不依赖 owlready2:用纯 Python 检查变量绑定完整性、类型匹配、本体元素存在性,避免 Java 依赖。
- Union-Find 实现传递性合并:概念合并用并查集确保 A
B, BC → A~C 自动合并。 - Embedding 三级降级:sentence-transformers → TF-IDF → hash 向量,确保无模型环境也能运行。
- JSON Schema 输出:适配工业 KG/Neo4j 场景,不输出 OWL/Turtle 格式。
- 7阶段可选架构:Stage 1-5 为核心管线,Stage 6/7 可通过配置开关独立启用/禁用。
- 概念三层分类:data/logic/application 三层架构,支持复杂企业场景。
- ECA 触发规则:事件-条件-动作模式,连接 SWRL 规则与业务流程。
- 服务编排组合:支持顺序/并行/条件/循环/异常处理五种编排模式。