使用python的rdflib框架将列表中的三元组添加到图形中



我正试图使用python的rdflib包将三元组添加到Graph中。关系以列表(数据帧中的特定列(的形式提供

sampleRelations = ['similarTo', 'brotherOf', 'capitalOf']
g = Graph()
# general relations
gen = Namespace('http://abcd.com/general#')
g.bind('gen',gen)
# Adding predefined relationships
g.add( (gen.relatedTo, RDFS.subClassOf, OWL.ObjectProperty) )

这一切如常。但是,当迭代列表时:

for rel in sampleRelations:
g.add( ('gen.'+rel, RDFS.subClassOf, OWL.ObjectProperty) )  

它抛出一个错误:"主题%s必须是rdflib术语"%(s,(。

relWithNamespace = gen+rel
print(relWithNamespace)
g.add( (relWithNamespace, RDFS.subClassOf, OWL.ObjectProperty) )

错误

AssertionError: Subject http://abcd.com/general#similarTo must be an rdflib term

我理解这个问题。我正在寻找可以绕过这一点的指针。

RDF术语可以是BNode、URI Reference或Literal
sampleRelations = ['similarTo', 'brotherOf', 'capitalOf'`]
g = Graph()
# general relations
gen = Namespace('http://abcd.com/general#')
g.bind('gen',gen)
# Adding predefined relationships
g.add( (gen.relatedTo, RDFS.subClassOf, OWL.ObjectProperty) )
for rel in sampleRelations :
rel = URIRef('http://abcd.com/general#' + rel)        
g.add((rel, RDFS.subClassOf, OWL.ObjectProperty))

URI引用也可以使用:

for rel in sampleRelations :                
g.add((gen.term(rel), RDFS.subClassOf, OWL.ObjectProperty))

for rel in sampleRelations :                
g.add((gen[rel], RDFS.subClassOf, OWL.ObjectProperty))

最新更新