维基数据:SPARQL Select 项仅当它们不包含 属性

Wikidata: SPARQL Select items only if they do not include a property

问题 #1

寻找我使用的人

SELECT ?item WHERE {
  ?item (wdt:P31/wdt:P279*) wd:Q5.
}

但是为了找到还活着的人我想排除没有定义其中之一的人 属性 570, 509, 20。 我该怎么办?

问题 #2

查找我使用的网球比赛

SELECT ?item
WHERE
{
  ?item wdt:P31 wd:Q13219666.
}

遗憾的是,有些锦标赛无法直接识别,因此使用:

SELECT ?item
WHERE
{
  ?item wdt:P31/wdt:P279 wd:Q13219666.
}

但是,我也返回了锦标赛的版本,例如“2000 wimbledon”、“2001 wimbledon”等,而我只想获得 'wimbledon'。我该怎么办?

谢谢

如评论中提供...

#1 @aksw

FILTER NOT EXISTS {?item wdt:P570|wdt:P509|wdt:P20 ?o}

@stanislav-kralin 的#2

This is a data quality problem. This appears to be a workaround:

SELECT DISTINCT ?item ?itemLabel 
WHERE { ?item  wdt:P31?/wdt:P279?  wd:Q13219666 . 
        FILTER NOT EXISTS { ?item  wdt:P585  [] } 
        SERVICE wikibase:label 
          { bd:serviceParam  wikibase:language  "en" . } 
      } 
# uncomment the following line if desired
      # VALUES (?item) { (wd:Q41520) }