2013-03-18 88 views
8

的第一个对象,我想从DBpedia中获得Daft Punk的的唱片,并为每张专辑我想显示: 1)标题 2)发行年份 3)的维基百科页面, 所以我写了这个查询:只选择从SPARQL查询

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 

其中一期工程,除了一个事实,即有一个专辑(活2007年),其中有2个不同的发行年份(因为你可以看到here),但我想显示只有最早的 两个。我应该如何编辑我的查询以使该专辑在第一次约会时只出现一次?感谢您的回答。

回答

5

您可以使用MINaggregate提取发行年份的最低值,当结果已经使用的SPARQL 1.1GROUP 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