2013-03-18 8 views
8

vorrei ottenere discografia di Daft Punk da DBpedia, e per ogni album vorrei mostrare: 1) Il titolo 2) Il rilascio anno 3) La pagina di wikipedia, così ho scritto questa query:Selezionare solo il primo oggetto da interrogazione 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 

quali opere, tranne per il fatto che c'è un album (Alive 2007) che dispone di 2 diversi anni di rilascio (come potete vedere here), ma vorrei mostrare solo il più primo del due. Come dovrei modificare la mia query per far apparire questo album una sola volta con la prima data? Grazie per le tue risposte.

risposta

5

è possibile utilizzare il MINaggregate per estrarre il valore minimo dell'anno di rilascio, quando il risultato è stato raggruppato utilizzando la funzione di GROUP BYSPARQL 1.1.

Per esempio, qualcosa di simile:

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