2013-03-18 9 views
8

chciałbym dostać dyskografię Daft Punk jest z dbpedia, i dla każdego albumu chciałbym pokazać: 1) tytuł 2) Udostępnienie roku 3) Na stronie Wikipedii więc napisałem to zapytanie:Wybierz tylko pierwszy obiekt z sparql zapytania

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 

który pracuje, z wyjątkiem faktu, że jest tylko jeden album (Alive 2007), który ma 2 różnych lat zwalniające (jak widać here), ale chciałbym, aby pokazać tylko najwcześniejsze z dwóch. Jak mam edytować moje zapytanie, aby ten album pojawił się tylko raz z pierwszą datą? Dziękuję za odpowiedzi.

Odpowiedz

5

można użyć MINaggregate wyodrębnić wartość minimalną rok wydania, gdy wynik został pogrupowane pomocą GROUP BY cechę SPARQL 1.1.

Na przykład coś takiego:

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 
Powiązane problemy