2013-03-18 65 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