2012-03-27 17 views
7

एक संगीत कलाकार को देखते हुए, मैं अन्य संगीत कलाकारों को खोजने की कोशिश कर रहा हूं जिनके पास एक विशेष कलाकार के साथ सबसे आम "जुड़े हुए" हैं। मैं एमिनेम इस क्वेरी है और यह ठीकडीबीपीडिया SPARQL - अन्य कलाकारों की छवि और संसाधन लिंक प्राप्त करना?

SELECT ?c (COUNT(*) AS ?count) WHERE { 
{ 
?b <http://dbpedia.org/property/associatedActs> <http://dbpedia.org/resource/Eminem>. 
?b <http://dbpedia.org/property/associatedActs> ? 
} 
}group by ?c order by desc(?count) LIMIT 10 

काम करता है लेकिन मैं कलाकार की तस्वीर के साथ ही उनके dbpedia संसाधन लिंक वापस पाने के लिए चाहते हैं (? ग) जोड़ने। इस

SELECT ?c (COUNT(*) AS ?count) WHERE { 
{ 
?b <http://dbpedia.org/property/associatedActs> <http://dbpedia.org/resource/Eminem>. 
?b <http://dbpedia.org/property/associatedActs> ?c. 
?c <http://dbpedia.org/ontology/thumbnail> ?i 
} 
}group by ?c order by desc(?count) LIMIT 10 

कोशिश कर रहा है मुझे एक त्रुटि देता है "चर? मैं परिणाम बाहर सेट समग्र और नहीं GROUP BY क्लॉज़ में उल्लेख किया है में प्रयोग किया जाता है"। अगर मैं समूह द्वारा समूहबद्ध करता हूं तो यह ठीक काम करता है लेकिन मुझे वापस नहीं मिल सकता है।

तो मैं तस्वीर और संसाधन अन्य मिलान कलाकारों को कैसे लिंक कर सकता हूं?

उत्तर

6

उपयोग उप प्रश्नों:

SELECT ?c ?i ?count WHERE { {SELECT ?c (COUNT(*) AS ?count) WHERE { 
{ 
?b <http://dbpedia.org/property/associatedActs> <http://dbpedia.org/resource/Eminem>. 
?b <http://dbpedia.org/property/associatedActs> ?c . 

} 
} group by ?c order by desc(?count) LIMIT 10} . ?c <http://dbpedia.org/ontology/thumbnail> ?i } 

आप परिणाम here पा सकते हैं।

1

बस एसक्यूएल की तरह, आप एकाधिक चर के साथ ग्रुप BY का उपयोग कर सकते हैं।

SELECT ?c (COUNT(*) AS ?count) ?i WHERE { 

?b <http://dbpedia.org/property/associatedActs> <http://dbpedia.org/resource/Eminem>. 
?b <http://dbpedia.org/property/associatedActs> ?c. 
?c <http://dbpedia.org/ontology/thumbnail> ?i 

} GROUP BY ?c ?i ORDER BY desc(?count) LIMIT 10 

परिणाम here देखें:

यह काम करने लगता है।