如何使用rdflib生成RDF-star格式的Turtle文件?
正确生成Turtle引用三元组的rdflib代码
你原来的代码使用了RDF具体化(reification)机制,通过BNode和RDF.Statement模拟嵌套三元组,但这和Turtle 1.2规范里的**引用三元组(<< ... >>)**不是同一概念,所以序列化后无法得到目标格式。
要生成规范中的引用三元组,需要使用rdflib对原生引用三元组的支持(要求rdflib版本≥6.0),直接将三元组作为主语添加到图中即可:
from rdflib import Graph, Namespace, Literal, Triple ns = Namespace("http://www.example.org/") g = Graph() # 添加普通三元组 g.add((ns.employee38, ns.familyName, Literal("Smith"))) # 构造引用三元组并作为主语添加 quoted_triple = Triple(ns.employee38, ns.jobTitle, Literal("Assistant Designer")) g.add((quoted_triple, ns.accordingTo, ns.employee22)) # 序列化为Turtle文件 g.serialize(destination="output.ttl", format="turtle")
代码说明
- 导入
Triple类构造引用三元组对象,该对象可直接作为RDF图中的主语或宾语使用 - 无需再用BNode和
RDF.Statement进行具体化,这种方式直接对应Turtle 1.2的<< ... >>语法 - 序列化后的输出会和W3C示例19完全一致:
PREFIX : <http://www.example.org/> :employee38 :familyName "Smith" . << :employee38 :jobTitle "Assistant Designer" >> :accordingTo :employee22 .
内容的提问来源于stack exchange,提问作者lix joy
相关产品推荐
相关产品推荐

