我在nodejs中使用rdfstore,但我无法弄清楚如何重用空白节点。我需要多次使用空白节点,而不是一次。
这是代码:
graph.add(rdf.createTriple(
new rdf.api.BlankNode(id);
rdf.createNamedNode(predicate)
rdf.createBlankNode()
);
id 取自先前输入的空白节点 "_:30" => "30"
我已经检查了创建的空白节点,它是正确的(具有正确的 id)。但是当我查看数据库时,它有错误的。它似乎正在使用一些计数器,即使我给他确切的节点。
编辑 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.');
});
我希望这有所帮助。