Здесь есть пара вещей, на которые следует обратить внимание:
Из набора данных «? D» означает https://permid.org/1-36436064275,, который является посещаемым субъектом.
Это происходит потому, что ваш график RDF является циклом.Первый бит вашего запроса SPARQL:
<https://permid.org/1-36436064275> ?a ?b .
Это связывает ?a
с rdf:type
и ?b
с 1-34414203048
.Вторая часть шаблона запроса:
?b ?c ?d .
Поскольку ?b
уже связан с 1-34414203048
предыдущим шаблоном, есть только одна опция для ?c
(hasTenureInOrganization
) и ?d
(1-36436064275
).Тогда третий бит вашего запроса:
?d ?e ?n .
?d
уже связан с предыдущим шаблоном, поэтому есть одна опция для ?e
(снова rdf:type
) и ?n
(* 1032)* снова).
Я хочу пропустить посещенную тему, чтобы "? d" было пустым, поэтому "? n" также пусто.
Это не такSPARQL работает.SPARQL возвращает результат запроса, только если шаблон whole имеет результат.Если ?n
не имеет значения, запрос вернет пустой результат.
Сказав, что, если вы хотите убедиться, что ?d
никогда не совпадает с темой, с которой вы начали свой запрос, вы можете просто добавить условие FILTER:
FILTER (?d != <https://permid.org/1-36436064275>)
НоКак я уже говорил в комментариях, я думаю, что вам, возможно, придется немного переосмыслить свою модель данных, а также рассмотреть цель вашего запроса.