Java-芝麻中的BNode解决方案

芝麻中有处理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,然后复制它的功能来获得自己的自定义实用程序功能.

上一篇:python-使用rdflib打印出本体中每个概念的个体


下一篇:Python库/代码以解析dbpedia中的.nt文件