gpt4 book ai didi

sparql - 维基数据查询重复

转载 作者:行者123 更新时间:2023-12-04 12:26:15 26 4
gpt4 key购买 nike

对不起,如果我的英语不好,但我真的没有任何地方可以用我的母语问这个问题。
我一直在尝试为 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 .”。如果删除此行,则不会列出重复项。但我需要这一行来在列表中显示作者姓名!
有想法该怎么解决这个吗?

最佳答案

该查询实际上为您提供了不同的项目。问题是有些项目有多个 rdfs:labels。您可以将项目视为示例:

SELECT *
WHERE
{
wd:Q2882840 rdfs:label ?label

SERVICE wikibase:label
{
bd:serviceParam wikibase:language "en" .
}
}

由于某些项目有多个 rdfs:label 谓词,它们显示在不同的行中。

关于sparql - 维基数据查询重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41377359/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com