领域 Ontology 与图谱 Schema 设计
Skill-Ontology-Schema-Design · 08-知识图谱
1. 解决的问题
知识图谱的 Schema(本体 / Ontology)是整个 KG 的"地图"——它定义了有哪些实体类型、有哪些关系、每个属性的值域和约束。Schema 质量直接决定下游 KGQA 的检索上限和 GraphRAG 的推理深度。母婴电商领域 Ontology 设计需要平衡覆盖率(覆盖所有业务场景)与可管理性(避免过度细化导致维护失控)。
2. 核心算法逻辑
知识图谱的 Schema(本体 / Ontology)是整个 KG 的"地图"——它定义了有哪些实体类型、有哪些关系、每个属性的值域和约束。Schema 质量直接决定下游 KGQA 的检索上限和 GraphRAG 的推理深度。母婴电商领域 Ontology 设计需要平衡覆盖率(覆盖所有业务场景)与可管理性(避免过度细化导致维护失控)。
3. 业务应用场景
业务背景:某跨境母婴品牌 KG 建设初期,不同工程师对"吸奶器配件"的关系建模方式各不相同(有人用 `hasPart`,有人用 `compatibleWith`,有人用 `accessoryOf`)。导致 KGQA 查询"Spectra S1 配什么配件"时返回空结果——因为关系名不一致。
Schema 统一设计过程: 1. LLM 分析 3,000 条产品描述,自动提出 32 个候选类、87 个候选属性 2. 领域专家(2 人)2 天内审核,保留 18 类、54 属性,合并 14 个冗余概念 3. 定义 SHACL 约束:`BreastPumpAccessory` 必须有 `compatibleWith → BreastPump` 4. 运行覆盖率检查:$C = 96.2\%$,$R = 88.7\%$,补充 11 条缺失必填关系
量化 ROI: - KGQA 配件查询召回率:从 31% 提升至 92%(+61pp) - 新工程师 Schema 理解时间:从 3 天降至 4 小时(有 SHACL 文档) - 下游 GraphRAG 推理精度:$+18\%$(统一 Schema 后节点连通性提升)
4. 输入数据要求
请查看原始代码模板获取输入规格。
5. 输出结果
请查看原始代码模板获取输出规格。
6. 业务价值 / ROI
- KGQA 召回率 +40pp 带来客服机器人解答率提升,减少人工客服:¥45,000/月
- 新品类上线加速(2周→2天),季度多上线 2 个新品类,GMV +8%:约 ¥120,000/季
- 合计年化 ROI ≈ ¥1,020,000
7. 代码模板
代码块数量:5 · 路径:未检测到
"""
领域 Ontology 与图谱 Schema 设计工具
基于 arXiv:2405.08661, arXiv:2312.01044 等 2024/2025 年方法
功能:
1. Ontology 类层次定义(OWL-like)
2. SHACL 约束规则定义与验证
3. LLM 辅助 Schema 扩展(mock 实现)
4. 覆盖率 C 和关系完整性 R 量化计算
Author: paper2skills
Date: 2026-06-06
"""
from typing import List, Dict, Optional, Set, Tuple
from dataclasses import dataclass, field
from collections import defaultdict
# ============================================================
# 数据模型:Ontology
# ============================================================
@dataclass
class OWLClass:
"""OWL 类定义"""
name: str
label_cn: str
parent: Optional[str] = None # superclass name(单继承简化)
description: str = ""
examples: List[str] = field(default_factory=list)
def is_root(self) -> bool:
return self.parent is None
@dataclass
class OWLProperty:
"""OWL 属性定义(Object Property 或 Datatype Property)"""
name: str
label_cn: str
domain: str # 主语类
range_type: str # 宾语类或 xsd 类型
is_object_property: bool = False
description: str = ""
# 约束
min_count: int = 0
max_count: Optional[int] = None # None = 不限
inverse_of: Optional[str] = None
@dataclass
class SHACLRule:
"""SHACL 约束规则(简化版)"""
rule_id: str
target_class: str
property_name: str
min_count: int = 0
max_count: Optional[int] = None
value_type: Optional[str] = None # "xsd:decimal", "xsd:string", 或 class name
8. 论文来源
- 2312.01044
- 2405.08661
- 2407.11340