维基数据查询未给出预期结果

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 结过婚的人。但是,我不能说已经彻底测试过了。