我想从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)有两个不同的发行年份(你可以看到here),但我想只显示最早的 二。如何编辑我的查询以使此相册仅在第一个日期出现一次?谢谢你的回答。
答案 0 :(得分:5)
使用aggregate的GROUP BY
功能对结果进行分组后,您可以使用MIN
SPARQL 1.1提取发布年份的最小值。
例如,像这样:
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