三元组详解

三元组详解

什么是三元组

三元组(Triple)是 RDF 图数据库 中的基本数据存储单元,用于表达一个完整的事实陈述。

三元组组成

组成部分 英文 说明
主语 Subject 被描述的实体或资源
谓语 Predicate 关系或属性
宾语 Object 属性值或关联的另一个实体

基本形式

1
(Subject, Predicate, Object)

三元组示例

表示关系

1
2
3
(张三, 认识, 李四)
(北京, 是首都, 中国)
(Java, 属于, 编程语言)

表示属性

1
2
3
(张三, 年龄, 25)
(张三, 职业, "软件工程师")
(北京, 人口, 21540000)

核心特点

  • 原子性:每个三元组表达一个独立、不可分割的事实
  • 可组合:多个三元组通过共享节点形成复杂的知识图谱
  • 语义明确:谓语精确定义了主语和宾语之间的关系
  • 标准化:遵循 W3C RDF 标准,具有良好的互操作性

三元组 vs 属性图

图数据库分为两大流派:RDF 图数据库属性图数据库,虽然都是图数据库,但数据模型不同。👉详解 ^model-comparison

特性 三元组模型(RDF) 属性图模型
代表数据库 Apache Jena、Stardog Neo4j、JanusGraph
边的属性 需要额外三元组表示(具体化) 边可直接附加属性
查询语言 SPARQL Cypher、Gremlin
标准化程度 W3C 标准 无统一标准
适用场景 语义网、本体建模 社交网络、推荐系统

RDF 三元组表示法

N-Triples 格式

1
2
<http://example.org/张三> <http://example.org/认识> <http://example.org/李四> .
<http://example.org/张三> <http://example.org/年龄> "25"^^<http://www.w3.org/2001/XMLSchema#integer> .

Turtle 格式

1
2
3
4
5
@prefix ex: <http://example.org/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

ex:张三 ex:认识 ex:李四 ;
ex:年龄 "25"^^xsd:integer .

SPARQL 查询示例

1
2
3
4
5
6
7
8
9
10
11
12
# 查询张三认识的所有人
SELECT ?person
WHERE {
ex:张三 ex:认识 ?person .
}

# 查询所有年龄大于20的人
SELECT ?person ?age
WHERE {
?person ex:年龄 ?age .
FILTER (?age > 20)
}

三元组在知识图谱中的应用

graph LR
    A[张三] -->|认识| B[李四]
    A -->|工作于| C[阿里巴巴]
    B -->|工作于| D[腾讯]
    C -->|位于| E[杭州]
    D -->|位于| F[深圳]

实际应用场景

  • 知识图谱:Google Knowledge Graph、百度知识图谱
  • 语义网:Linked Open Data
  • 本体建模:OWL 本体描述
  • 智能问答:基于知识图谱的问答系统
  • 推荐系统:基于知识图谱的推荐

总结

三元组是图数据库的基础数据结构,通过 (主语, 谓语, 宾语) 的形式表达事实。它是构建知识图谱的基石,广泛应用于语义网、智能问答等领域。


三元组详解
https://zmmmmy.github.io/2026/01/12/三元组详解/
作者
ZhiMy
发布于
2026年1月12日
许可协议