Wikidata:SPARQL仅在项目不包含属性时选择项目

问题描述 投票:0回答:1

问题#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'。我能怎么做?

谢谢

sparql wikidata
1个回答
2
投票

正如评论中所提供的......

#1 by @aksw

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

#2 by @stanislav-kralin

这是数据质量问题。这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) }
© www.soinside.com 2019 - 2024. All rights reserved.