维基数据查询未给出预期结果
Wikidata query does not give expected results
我想得到 parents 未婚的人(parents 不属于彼此的配偶 属性),所以我编写了以下查询
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)是配偶之一,但他的信息仍然returns,我不想包括这个。
我想问一下如何更改我的查询以获得我想要的?这是维基数据端点的 link。
如果像 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
我想这就是你想要的。
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
它将排除所有 parents 结过婚的人。但是,我不能说已经彻底测试过了。
我想得到 parents 未婚的人(parents 不属于彼此的配偶 属性),所以我编写了以下查询
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)是配偶之一,但他的信息仍然returns,我不想包括这个。
我想问一下如何更改我的查询以获得我想要的?这是维基数据端点的 link。
如果像 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
我想这就是你想要的。
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
它将排除所有 parents 结过婚的人。但是,我不能说已经彻底测试过了。