我想从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
Run Code Online (Sandbox Code Playgroud)
哪个有效,除了有一张专辑(Alive 2007)有两个不同的发行年份(你可以看到这里),但我想只显示两个中最早的一个.如何编辑我的查询以使此相册仅在第一个日期出现一次?谢谢你的回答.
当使用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
Run Code Online (Sandbox Code Playgroud)