10

我想从 dbpedia 获取 Daft Punk 的唱片目录,对于我想展示的每张专辑:1)标题 2)发行年份 3)维基百科页面,所以我写了这个查询:

PREFIX d: <http://dbpedia.org/ontology/>
PREFIX prop: <http://dbpedia.org/property/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX : <http://dbpedia.org/resource/>

SELECT DISTINCT  str(?name) YEAR(?relDate) AS ?relYear ?wiki WHERE {
    ?album a d:Album .
    ?album foaf:name ?name .
    ?album d:artist :Daft_Punk .   
    ?album foaf:isPrimaryTopicOf ?wiki .
    ?album d:releaseDate ?relDate .       
}

ORDER BY ?relDate

哪个有效,除了一张专辑(Alive 2007)有两个不同的发行年份(如您在此处看到的),但我只想展示两者中最早的一张。我应该如何编辑我的查询以使这张专辑在第一个日期只出现一次?感谢您的回答。

4

1 回答 1

7

当使用SPARQL 1.1的功能对结果进行分组时,您可以使用MIN 聚合来提取发布年份的最小值。GROUP BY

例如,像这样:

PREFIX d: <http://dbpedia.org/ontology/>
PREFIX prop: <http://dbpedia.org/property/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX : <http://dbpedia.org/resource/>

SELECT str(?name) MIN(YEAR(?relDate)) AS ?relYear ?wiki
WHERE {
    ?album a d:Album .
    ?album foaf:name ?name .
    ?album d:artist :Daft_Punk .   
    ?album foaf:isPrimaryTopicOf ?wiki .
    ?album d:releaseDate ?relDate .       
}
GROUP BY ?name ?wiki
ORDER BY ?relYear
于 2013-03-18T15:53:59.907 回答