我在 python 中使用 RDFLib 创建了不同的图,它们共享相同的 Bnode。每个 BNode 都有一个特定的名称。我现在正在尝试使用 4store 和 http4store 将所有图表存储在一个图表中。我面临的问题是,在将图形添加到 4store 数据库后,Bnode 发生了变化并被分配了不同的名称,这是一个相当大的问题,因为所有图形共享相同的 Bnode。因此,每次收到新图表时,我都会将其存储如下:
self.insert(descriptor,"reference",format="xml")
参考是我使用创建的图的名称:4s-httpd -p 8000 reference
描述符是要添加的图。
#the insert function is as follow
def insert(self, content, graph, format="xml"):
r = self.store.append_graph(uri=graph, content=content, content_type=format)
if not (r.status == 201 or r.status == 200):
raise TripleStoreInsertException(content)
然后使用 SPARQL 查询我得到了包含不同 Bnodes 名称的三倍存储。我还尝试用旧图解析每个新图,以在存储之前使用 RDFLib 解析器创建一个图,但在 BNode 发生更改时我得到了相同的结果。
我的问题是:如何使用完全相同的 Bnode 存储图形,如果不可能,RDFLib 中是否有替代方案?
同样由于关于 4store 的文档湖,什么是对 python 友好的最好的 RDF Triplestores?