Я очень новичок в sparql и пытаюсь выполнить 3 запроса на викиданных:
- Лица, которые не являются художниками и являются учениками художников.
- Лица, которые не являются художниками и являются академическими детьми или детьми художников (примечание: академическое потомство человека
P
- это тот, кто является / был студентом P
или студентомстудент P
или ....). - Люди, которые являются академическими потомками самих себя.
Я застрял на первом, я попытался:
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)
, это не проверка всех профессий у художника, а только первая, поэтому я получаю маляров, у которых несколько выходных данных, потому что проверяется только первая профессия против художника, но я хочу, чтобы все эти профессии были проверены против художника.