1. 创建第一个RDF三元组

创建第一个RDF三元组 学习卡片

任务说明

本案例的目标是创建并验证第一个RDF三元组。你将使用Python的rdflib库,以http://example.org/为命名空间,构建一个描述“Alice知道Bob”的三元组,并将其序列化为Turtle格式输出,同时通过查询验证三元组确实存在。

实现代码

from rdflib import Graph, Namespace, URIRef, Literal

# 创建命名图
g = Graph()

# 定义命名空间
ex = Namespace("http://example.org/")
foaf = Namespace("http://xmlns.com/foaf/0.1/")

# 创建资源
alice = URIRef(ex + "Alice")
bob = URIRef(ex + "Bob")

# 添加三元组: Alice knows Bob
g.add((alice, foaf.knows, bob))

# 序列化为Turtle格式
turtle_data = g.serialize(format="turtle")
print("=== Turtle 序列化输出 ===")
print(turtle_data)

# 验证三元组是否存在
target_triple = (alice, foaf.knows, bob)
if (alice, foaf.knows, bob) in g:
    print("=== 验证结果 ===")
    print(f"三元组存在: {target_triple}")
else:
    print("三元组不存在")

运行方式

pip install rdflib
python create_first_triple.py

预期输出

=== Turtle 序列化输出 ===
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ns1: <http://example.org/> .

ns1:Alice foaf:knows ns1:Bob .

=== 验证结果 ===
三元组存在: (rdflib.term.URIRef('http://example.org/Alice'), rdflib.term.URIRef('http://xmlns.com/foaf/0.1/knows'), rdflib.term.URIRef('http://example.org/Bob'))

验证方法

运行上述代码后,观察控制台输出:

  1. Turtle序列化:应看到ns1:Alice foaf:knows ns1:Bob .这一行,表示三元组已正确写入图并成功序列化。
  2. 成员检查:程序会输出“三元组存在”及完整的三元组内容,证明该三元组已成功添加到图中。

若两项输出均符合预期,则说明第一个RDF三元组创建成功。

代码说明

代码首先创建了一个空的Graph对象,然后定义了example.org和FOAF两个命名空间。通过URIRef创建了Alice和Bob两个资源节点,使用add()方法将三元组(Alice, knows, Bob)加入图中。最后通过serialize()方法将图转换为Turtle格式输出,并用in关键字验证三元组是否存在于图中。

RDF三元组结构 主语 ex:Alice 谓语 foaf:knows 宾语 ex:Bob 谓词连接 指向宾语 三元组 = (主语, 谓语, 宾语) = (ex:Alice, foaf:knows, ex:Bob)