芝麻中有处理BNODE的解决方案吗?
例如:
if(! (statement.getObject() instanceof BNode))
tempModel.remove(statement);
如果我们有一个{{s p1 _:a,_:a p2“ value”)的RDF,那么即使删除该语句,第二个三元组仍将保留在模型中.没有提供解决方案来处理Sesame中的BNode吗?
解决方法:
您可以这样做:
tempModel.remove(statement); // remove the first statement
if (statement.getObject() instanceof BNode) {
// remove the second statement
tempModel.remove((BNode)statement.getObject(), null, null);
}
在大多数简单情况下,它将解决此问题.
但是,如果BNode是RDF集合的开始(也就是说,使用许多rdf:first和rdf:rest属性以及大量空白节点进行建模),那么您将需要比这更聪明的东西,因为在这种情况下,第二条语句的对象本身也可以再次为空白节点.
在当前的Sesame版本中,您将需要执行一些手动递归循环才能实现此目的.
但是,芝麻4.1.0中将发布utility function to more easily handle RDF Collections.如果您等不及要等到正式发行,您可以peek at its source code,然后复制它的功能来获得自己的自定义实用程序功能.