Sparql запрос в Викиданных - PullRequest
0 голосов
/ 27 октября 2019

Я очень новичок в sparql и пытаюсь выполнить 3 запроса на викиданных:

  1. Лица, которые не являются художниками и являются учениками художников.
  2. Лица, которые не являются художниками и являются академическими детьми или детьми художников (примечание: академическое потомство человека P - это тот, кто является / был студентом P или студентомстудент P или ....).
  3. Люди, которые являются академическими потомками самих себя.

Я застрял на первом, я попытался:

SELECT DISTINCT ?human ?humanLabel WHERE {
  ?human wdt:P31 wd:Q5.
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
  ?human wikibase:statements ?statementcount.
  ?human wdt:P106 ?profession.
  FILTER(?profession != wd:Q1028181)
  FILTER(?statementcount > 50 )
  ?human wdt:P1066 ?teacher.
  ?teacher wdt:P106 ?tprofession.
  FILTER(?tprofession = wd:Q1028181)
  OPTIONAL {  }

}LIMIT 50

, но я думаю в этой строке:FILTER(?profession != wd:Q1028181), это не проверка всех профессий у художника, а только первая, поэтому я получаю маляров, у которых несколько выходных данных, потому что проверяется только первая профессия против художника, но я хочу, чтобы все эти профессии были проверены против художника.

...