我正在使用以下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>
为什么它返回这么多行?
编辑:我知道我可以使用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月,而其他人则分别陈述了他的两个任期。
答案 0 :(得分:2)
您那里有?position_held_statement
。应该是?statement
。
当您意外地在SPARQL中获得大量结果时,通常是由于变量名不匹配,使应该由联接变成笛卡尔积的原因。