2013-03-18 13 views
8

私はDBpediaのからダフト・パンクのディスコグラフィーを取得したいと思い、そして各アルバムのために私が表示したいと思い: 1)タイトル 2)リリース年 3)Wikipediaのページ、 は、私はこのクエリ書いた:のみを選択最初のオブジェクトの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 

(あなたがhereを見ることができるように)2つの異なるリリースの年を持って一枚のアルバム(アライブ2007)があるという事実を除いて、動作しますが、私が表示したいと思い最も早いのは の2人だけです。このアルバムを最初の日付に1回だけ表示するようにクエリを編集するにはどうすればよいですか?あなたの答えをありがとう。

答えて

5

あなたは結果がSPARQL 1.1GROUP BY機能を使用してグループ化されている場合、リリース年の最小値を抽出するためにMINaggregateを使用することができます。例えば

、このような何か:

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 
関連する問題