核心数据模型:三元组(Triple)

知识图谱的基础是 "主体 - 关系 - 客体" 的三元组结构:

<实体A> --> [关系] --> <实体B>

例如:
<爱因斯坦> --> [出生于] --> <德国>
<爱因斯坦> --> [提出了] --> <相对论>
<相对论> --> [影响了] --> <现代物理学>

当大量三元组堆叠,节点之间自然形成网状连接。


技术实现层

1️⃣ 存储层 —— 图数据库

关系型数据库(表结构)  ❌ 不适合多跳查询
图数据库(图结构)      ✅ 天然支持网状存储

图数据库

特点

Neo4j

最流行,原生图存储,Cypher查询语言

JanusGraph

分布式,适合超大规模

RDF存储(Jena等)

语义Web标准,SPARQL查询

Neo4j 示例:

// 创建节点和关系
CREATE (a:Person {name: "爱因斯坦"})
CREATE (b:Country {name: "德国"})
CREATE (a)-[:出生于]->(b)

// 查询"与爱因斯坦相关的所有事物"(多跳)
MATCH (p {name:"爱因斯坦"})-[*1..3]-(related)
RETURN related

2️⃣ 表示层 —— 知识建模标准

本体(Ontology)
    ├── 定义"类"的层级结构
    │       人 --> 科学家 --> 物理学家
    ├── 定义"关系"的类型和约束
    │       出生于.domain = 人
    │       出生于.range  = 地点
    └── 形成统一的语义规范

常用标准:

  • RDF — 描述资源关系

  • OWL — 表达复杂本体逻辑

  • SPARQL — 图查询语言


3️⃣ 构建层 —— 知识如何"入网"

原始数据来源
    │
    ├── 结构化数据(数据库、表格)──── 直接映射
    ├── 半结构化(Wikipedia、JSON)── 规则抽取
    └── 非结构化(文本、网页)──────── NLP处理
                                          │
                              ┌───────────┼───────────┐
                         实体识别      关系抽取     实体链接
                        (NER)       (RE)          (EL)
                              │
                              ▼
                         写入图数据库

网状特性的关键机制

🔗 实体消歧与对齐

同一实体在不同来源中可能有不同名字,需要统一:

"苹果公司" = "Apple Inc." = "AAPL"
              ↓
         合并为同一节点

🧭 多跳推理

网状结构支持沿边"跳跃"推理:

爱因斯坦 --[国籍]--> 德国 --[位于]--> 欧洲
                              ↓
          推断:爱因斯坦与欧洲存在关联

🔄 反向关系自动生成

A --[父亲]--> B
自动推导:
B --[子女]--> A

一句话总结

知识图谱通过 三元组建模 描述实体关系,用 图数据库 存储,借助 NLP/规则 从多源数据抽取知识,再通过 本体约束 统一语义——无数节点和边堆叠,自然形成一张可推理的知识网络。

想深入了解哪个环节?比如关系抽取的NLP方法图嵌入(Graph Embedding)