我在python中使用RDFLib创建了不同的图形,这些图形共享相同的Bnode . 每个BNode都有一个特定的名称 . 我现在尝试使用4store和http4store将所有图形存储在一个图形中 . 我面临的问题是,在向4store数据库添加图形之后,Bnode发生了变化并被分配了不同的名称,这是一个非常大的问题,因为所有图形都共享相同的Bnode . 因此,每次收到新图表时,我都会将其存储如下:

self.insert(descriptor,"reference",format="xml")

reference是我使用的创建的图形的名称: 4s-httpd -p 8000 reference ,descriptor是要添加的图形 .

#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查询我得到了包含不同Bnode名称的三倍存储 . 我还尝试用旧图解析每个新图,以便在存储之前使用RDFLib解析器创建一个单独的图,但是在BNode更改的情况下我获得了相同的结果 .

我的问题是:如何使用完全相同的Bnode存储图形,如果不可能,RDFLib中是否有替代方案?

另外由于关于4store的文档湖,什么是最好的RDF Triplestores是蟒蛇友好的?