RDFlib在三元组中添加空白节点

RDFlib在三元组中添加空白节点,rdf,rdflib,blank-nodes,Rdf,Rdflib,Blank Nodes,我正在使用RDFlib自动化创建DSD的过程。 我想得到如下格式: _:refPeriodStep1 a qb4o:HierarchyStep; etc... 但是使用这个: graph.add((BNode('refPeriodStep1'), RDF.type, URIRef(qb4o + 'HierarchyStep'))) 文件未按要求创建 我尝试使用函数n3(): 但我得到了以下错误: AssertionError: Subject _:refPeriodStep1 must be

我正在使用RDFlib自动化创建DSD的过程。 我想得到如下格式:

_:refPeriodStep1 a qb4o:HierarchyStep;
etc...
但是使用这个:

graph.add((BNode('refPeriodStep1'), RDF.type, URIRef(qb4o + 'HierarchyStep')))
文件未按要求创建

我尝试使用函数n3():

但我得到了以下错误:

AssertionError: Subject _:refPeriodStep1 must be an rdflib term

有没有办法让它如愿?

如注释中所建议的,如果空白节点的名称重要,则应该使用URI代替。 您的最后一条评论表明,您在声明
URIRef(“refPeriodStep1”)
时没有正确使用URIRef(根据我的理解)

如果希望
refPeriodStep1
在保持(不知何故)不固定的情况下不成为空节点,则可以使用图形的
名称空间管理器
定义空前缀

例如,下面的代码使用
Namespace
fonctionalities而不是直接使用URIRef来创建类型为
qb4o:HierarchyStep
refPeriodStep
(如果您大量重用此处所述的名称空间,这可能是最简单的方法):

从rdflib.namespace导入NamespaceManager
从rdflib导入BNode、命名空间、图形
QB4O=名称空间('http://example.com/qb4o#')
n=名称空间('http://example.com/base-ns#')
g=图()
g、 namespace\u manager=NamespaceManager(Graph())
g、 namespace_manager.bind('qb4o',qb4o)
g、 名称空间管理器绑定(“”,n)
g、 添加((n['refPeriodStep1'],RDF.type,QB4O['HierarchyStep']))
g、 序列化('test.ttl',format='turtle')
这将输出以下内容(以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 .

你所说的“未按预期创建”是什么意思?@StanislavKralin以这种方式创建了一个[],而我希望获得uu2;:refPeriodStep1。你知道吗?如果保留空白节点标签很重要,请改用URI。@StanislavKralin使用的URI如下:g.add((URIRef(“,”refPeriodStep1“)、RDF.type、URIRef(qb4o+”HierarchyStep')),我得到的是:一个qb4o:HierarchyStep。我使用URIRef是否错误?
@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 .
_:refPeriodStep1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://example.com/qb4o#HierarchyStep> .