【发布时间】:2016-12-29 10:03:59
【问题描述】:
对不起,如果我的英语不好,但我真的没有任何地方可以用我的母语提出这个问题。 我一直在尝试为 Wikidata 创建 SPARQL 查询,该查询应该创建一个列表,其中列出了 1925-1950 年间创作的所有恐怖小说、作者姓名以及(如果有的话)图片:
SELECT DISTINCT ?item ?itemLabel ?author ?name ?creation ?picture
WHERE
{
?item wdt:P136 wd:Q193606 . # book
?item wdt:P50 ?author . # author
?item wdt:P577 ?creation .
?item wdt:P577 ?end .
?author rdfs:label ?name .
OPTIONAL{ ?item wdt:P18 ?picture }
FILTER (?creation >= "1925-01-01T00:00:00Z"^^xsd:dateTime) .
FILTER (?end <= "1950-12-31T23:59:59Z"^^xsd:dateTime) .
SERVICE wikibase:label
{
bd:serviceParam wikibase:language "en" .
}
}
但是,由于某种原因,此查询将重复项放入列表中。 DISTINCT 没有多大作用。一段时间后,我发现原因是“?item rdfs:label ?name.”。如果删除此行,则不会列出任何重复项。但我需要这一行来在列表中显示作者姓名! 有关如何解决此问题的任何想法?
【问题讨论】: