antoniogarrote / rdfstore-js重用空白节点

时间:2014-12-16 09:12:54

标签: javascript node.js rdfstore

我在nodejs中使用 rdfstore ,我无法弄清楚如何重复使用空白节点。我只需要使用一次空白节点。

以下是代码:

graph.add(rdf.createTriple(
   new rdf.api.BlankNode(id);
   rdf.createNamedNode(predicate)
   rdf.createBlankNode()
);

id 取自先前输入的blankNode" _:30" => " 30"

我已经检查了创建的空白节点并且它是正确的(具有正确的ID)。但是当我查看db时,它有错误的一个。它似乎使用了一些计数器,即使我给他确切的节点。

编辑1

我已经检查了创建的三重奏,它看起来像我想要的那样。所以问题必须在于将三元组添加到图形/存储三元组中。

感谢您的帮助,

米甲

1 个答案:

答案 0 :(得分:1)

原因很简单:每次调用rdfstore.Store.insert都会创建一个SPARQL INSERT语句。每个单独的SPARQL语句都有自己的一组唯一空白节点。

那就是说,我们问题的唯一解决方案是收集三元组以添加一个数组,最后一次性添加它们。

var triples = [];
[...]
store.insert(store.rdf.createGraph(triples), 
  graph, 
  function(success, cnt) {
    if(success) console.log(cnt + ' triples successfully added.');
  });

我希望这会有所帮助。