正如评论中所建议的,如果空白节点的名称很重要,您可能应该使用 URI。您的最后一条评论表明您在陈述时没有正确使用 URIRef URIRef('_', 'refPeriodStep1')
(根据我的理解)。
如果您希望您refPeriodStep1
在保持它(以某种方式)无前缀的同时不成为空白节点,您可以使用namespace_manager
图形的 定义一个空前缀。
例如,以下代码使用fonctionnalities 而不是 URIRef 直接创建refPeriodStep
类型(如果您重用大量命名空间,如文档中所述,这可能是最简单的方法):qb4o:HierarchyStep
Namespace
from rdflib.namespace import NamespaceManager
from rdflib import BNode, Namespace, Graph
QB4O = Namespace('http://example.com/qb4o#')
n = Namespace('http://example.com/base-ns#')
g = Graph()
g.namespace_manager = NamespaceManager(Graph())
g.namespace_manager.bind('qb4o', QB4O)
g.namespace_manager.bind('', n)
g.add((n['refPeriodStep1'], RDF.type, QB4O['HierarchyStep']))
g.serialize('test.ttl', format='turtle')
这将输出以下(在海龟中)与您期望的接近:
@prefix : <http://example.com/base-ns#> .
@prefix qb4o: <http://example.com/qb4o#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
:refPeriodStep1 a qb4o:HierarchyStep .
请注意,如果您尝试以n-triples
格式序列化空白节点,RDFLib 将保留创建该空白节点时使用的名称,例如:
_:refPeriodStep1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://example.com/qb4o#HierarchyStep> .