Rdf Jena用匿名节点删除一个三元组

Rdf Jena用匿名节点删除一个三元组,rdf,jena,blank-nodes,Rdf,Jena,Blank Nodes,我一直试图用Jena从模型中删除一个三元组,但没有成功。当主语、谓语和宾语是URI或文本时,情况会很好,但对于匿名节点,它似乎不起作用。例如,在模型中考虑这个三元组: _:A68d23cacX3aX13f793fa898X3aXX2dX7ffd <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "class" . 无论使用createAnon还是节点,我都无法删除三元组。ANY。 我不想使用AnonId,因为如果我在另一台机器上运

我一直试图用Jena从模型中删除一个三元组,但没有成功。当主语、谓语和宾语是URI或文本时,情况会很好,但对于匿名节点,它似乎不起作用。例如,在模型中考虑这个三元组:

_:A68d23cacX3aX13f793fa898X3aXX2dX7ffd <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "class" .
无论使用
createAnon
还是
节点,我都无法删除三元组。ANY
。 我不想使用AnonId,因为如果我在另一台机器上运行代码,我怀疑是否会生成相同的匿名id

简单的回答:

inMemModel.removeAll(null,RDF.value,ResourceFactory.createPlainLiteral(“类”);
这将删除谓词为
rdf:value
且对象为
“class”
的所有三元组

内部-在您尝试的SPI级别-您可以在memmodel.remove(Node.ANY、nodePredicate、nodeObject)中使用
inMemModel.remove,它查找和删除(使用
delete
)匹配的三元组
delete
需要接地三元组,因此不进行查找


createAnon()
不起作用仅仅是因为它是一个不同的主题,所以没有什么可以删除的。

我有另一种方法-我有
:A68d23cacX3aX13f793fa898X3aXX2dX7ffd
我需要删除它的所有三元组-如何做?
model.removeAll(res,null,null)
(当res是您的bnode时)。但是,您也可以使用
res.removeProperties()
,它做同样的事情(假设您的资源来自该模型)。问题是
ResourceFactory.createResource(“\uuquo:A68d23cacX3aX13f793fa898X3aXX2dX7ffd”)
A68d23cacX3aX13f793fa898X3aXX2dX7ffd
对我不起作用,并且
model.find(res,null,null)
正在返回空迭代器。这是我的主要问题-如何匹配
bnode
,正如我所说,它应该匹配前面提到的。啊,我明白了。尝试
Resource res=model.createResource(新的AnonId(“A68D23CACX3AX13F793FA898X3AX2DX7FFD”)有意思,我没试过。提前谢谢