1. 创建第一个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'))
验证方法
运行上述代码后,观察控制台输出:
- Turtle序列化:应看到
ns1:Alice foaf:knows ns1:Bob .这一行,表示三元组已正确写入图并成功序列化。 - 成员检查:程序会输出“三元组存在”及完整的三元组内容,证明该三元组已成功添加到图中。
若两项输出均符合预期,则说明第一个RDF三元组创建成功。
代码说明
代码首先创建了一个空的Graph对象,然后定义了example.org和FOAF两个命名空间。通过URIRef创建了Alice和Bob两个资源节点,使用add()方法将三元组(Alice, knows, Bob)加入图中。最后通过serialize()方法将图转换为Turtle格式输出,并用in关键字验证三元组是否存在于图中。