antoniogarrote/rdfstore-js повторное использование пустого узла
Я использую rdfstore в nodejs и не могу понять, как повторно использовать пустые узлы. Мне нужно использовать пустой узел более одного раза.
Вот код:
graph.add(rdf.createTriple(
new rdf.api.BlankNode(id);
rdf.createNamedNode(predicate)
rdf.createBlankNode()
);
Идентификатор взят из ранее введенного blankNode "_:30" => "30"
Я проверил созданный пустой узел, и это правильно (с правильным идентификатором). Но когда я смотрю в БД, он ошибается. Кажется, он использует какой-то счетчик, даже я даю ему точный узел.
РЕДАКТИРОВАТЬ 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.');
});
Надеюсь, это поможет.