Каков правильный универсальный способ вставки пустых узлов с помощью SPARQL?

Я пишу приложение, используя фреймворк Apache Jena. С этим я могу делать все (вставлять, обновлять, выбирать). Но я не могу понять, как правильно вставлять пустые узлы с помощью запроса INSERT.

Есть ли для этого готовый подход (который работает с любой конечной точкой)? Я знаю, что SPARQL 1.1 представил некоторые функции для этого, но, похоже, это не работает с конечной точкой Virtuoso.


person oole    schedule 25.04.2016    source источник
comment
Это может помочь думать о bNodes (пустые узлы, безымянные узлы) как о местоимениях, которые можно использовать, когда вы не знаете собственное имя объекта, который существует и на который вам нужно ссылаться, будь то для его описания или для описывать другие сущности. Для других, чтобы дать вам совет, полезно знать, что вы пробовали, какие результаты вы получили, и как они отличаются от того, что вы ожидали/желали.   -  person TallTed    schedule 26.04.2016
comment
Если на самом деле в этом есть специфический для Virtuoso аспект, на такие вопросы часто быстрее и точнее отвечают на форумах, ориентированных на Virtuoso, таких как список рассылки пользователей Virtuoso, форумы поддержки OpenLink или Запрос в службу поддержки OpenLink. (Отказ от ответственности: я работаю на OpenLink Software, производителя Virtuoso.)   -  person TallTed    schedule 26.04.2016


Ответы (1)


Есть несколько синтаксисов для использования. Предположим, вы хотите добавить bnode типа :Person к свойству объекта с именем child. Вот один из способов:

?s :child [a :Person] .

И другой:

?s :child [] .
[] a :Person .

И нотация _:bn довольно универсальна и полезна, когда в графе более одного bnode:

?s :child _:b0 .
_:b0 a :Person .
person scotthenninger    schedule 25.04.2016
comment
полезно, когда в графе более одного bnode: я думаю, что это наиболее полезно, когда вам нужно ссылаться на bnode несколько раз. Например,. :s1 :p _:b0 . :s2 :p _:b0 . - person Joshua Taylor; 26.04.2016
comment
Спасибо за этот ответ. Это сделало мое видение bNodes более ясным. И я также понял, что может быть невозможно вставить bNodes из таблицы с запросами INSERT DATA по строкам. (И сохраняя связь между bNodes в таблице). Поэтому я думаю, было бы разумнее найти способ вставить локальную модель напрямую в удаленную конечную точку. - person oole; 26.04.2016