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

Надеюсь, это поможет.

Другие вопросы по тегам