SPARQL查询返回的行比预期的多得多

时间:2019-04-18 18:21:25

标签: sparql wikidata

我正在使用以下SPARQL查询来获取所有美国总统的名单以及总统任期的开始和结束日期:

locations <- text %>%
  str_locate_all("\\s") %>%
  map(~.[, 1]) %>%
  reduce(intersect)

widths <- c(1, locations, str_length(text[1])) %>% diff()

read_fwf(text, fwf_widths(widths))
#> # A tibble: 3 x 5
#>   X1     X2    X3    X4    X5   
#>   <chr>  <chr> <chr> <chr> <chr>
#> 1 df ggh a a   h h   a     q    
#> 2 <NA>   aa    hh    ab    q    
#> 3 fggh   aa    hh    a     <NA>

You can try it out here

为什么它返回这么多行?

编辑:我知道我可以使用SELECT ?person $personLabel $start $end WHERE { ?person wdt:P39 wd:Q11696. ?person p:P39 ?statement. ?position_held_statement ps:P39 wd:Q11696. ?statement pq:P580 ?start. ?statement pq:P582 ?end SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } } ORDER BY DESC($start) 仅获得不同的结果,但是我想学习如何找出重复的原因。此外,有些条目指出,巴拉克·奥巴马(Barack Obama)的任期从2009年1月至2017年1月,而其他人则分别陈述了他的两个任期。

1 个答案:

答案 0 :(得分:2)

您那里有?position_held_statement。应该是?statement

当您意外地在SPARQL中获得大量结果时,通常是由于变量名不匹配,使应该由联接变成笛卡尔积的原因。