sparql: как избежать посещаемого предмета - PullRequest
0 голосов
/ 04 октября 2018

и я пытаюсь написать запрос SPARQL, чтобы найти отдельный объект.

вот набор данных:

<https://permid.org/1-36436064275> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://permid.org/1-34414203048> .

<https://permid.org/1-34414203048> <http://permid.org/ontology/person/hasTenureInOrganization> <https://permid.org/1-36436064275> .

мой запрос sparql выглядит так:

select distinct ?n where {

      <https://permid.org/1-36436064275> ?a ?b .
      ?b ?c ?d . 
      ?d ?e ?n .                     
}

Из набора данных «? D» - это https://permid.org/1-36436064275,, который является посещаемым субъектом.Я хочу пропустить посещенную тему, чтобы «? D» было пустым, поэтому «? N» также пусто.

1 Ответ

0 голосов
/ 04 октября 2018

Здесь есть пара вещей, на которые следует обратить внимание:

Из набора данных «? 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>)

НоКак я уже говорил в комментариях, я думаю, что вам, возможно, придется немного переосмыслить свою модель данных, а также рассмотреть цель вашего запроса.

...