0

我在 nodejs 中使用rdfstore,但我不知道如何重用空白节点。我需要不止一次使用空白节点。

这是代码:

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

id取自先前输入的空白​​节点 "_:30" => "30"

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

编辑 1

我已经检查了创建的三元组,它看起来像我想要的那样。所以问题一定是在将三元组添加到图形/存储三元组的某个地方。

谢谢你的帮助,

迈克尔。

4

1 回答 1

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.');
  });

我希望这有帮助。

于 2015-01-21T20:41:19.620 回答