我想让那些没有结婚的父母(父母不是彼此配偶财产)的人,所以我写下面的查询
SELECT ?human ?father ?mother ?someone ?humanLabel ?fatherLabel ?motherLabel ?someoneLabel WHERE {
?human wdt:P31 wd:Q5.
?human wdt:P22 ?father.
?human wdt:P25 ?mother.
?father wdt:P26 ?someone.
FILTER (?mother != ?someone)
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}limit 100
然后我发现如果一个人有几个配偶,那么结果会给我带来很多垃圾。以Q15904745为例,他的父亲(Q198042)有2个配偶记录,他的母亲(Q16603522)是配偶之一,但他的信息仍然会返回,我不想包括这个。
我想问一下如何更改查询以获得我想要的内容?以下是维基数据端点的link。
答案 0 :(得分:1)
如果有this:
SELECT distinct ?human ?father ?mother ?someone ?humanLabel ?fatherLabel ?motherLabel
WHERE {
?human wdt:P31 wd:Q5.
?human wdt:P22 ?father.
?human wdt:P25 ?mother.
FILTER (NOT EXISTS {?father wdt:P26 ?mother }) .
FILTER (NOT EXISTS {?mother wdt:P26 ?father }) .
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}
order by ?humanLabel
limit 100
答案 1 :(得分:1)
我认为这可以做你想要的。
SELECT ?human ?father ?mother ?humanLabel ?fatherLabel ?motherLabel WHERE {
?human wdt:P31 wd:Q5.
?human wdt:P22 ?father.
?human wdt:P25 ?mother.
MINUS {?mother wdt:P26 ?father.}
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}limit 100
它将排除所有父母曾经结婚的人。但是,我不能声称已经彻底测试过它。