2009-08-03 9 views
27

मैं है निम्न क्वेरी:SPARQL क्वेरी और विशिष्ट गिनती

SELECT ?tag WHERE { 
    ?r ns9:taggedWithTag ?tagresource. 
    ?tagresource ns9:name ?tag 
} 
LIMIT 5000 

और परिणाम हैं:

tag | count 
----------------- 
abc  7 
abd  1 
ads  1 
anb  1 

मैं:

abc 
abc 
abc 
abc 
abc 
abc 
abc 
abd 
ads 
anb 

मैं somthing की तरह प्राप्त करना चाहते हैं count(*) और count(?tag) के साथ इसे आजमाया है, लेकिन मुझे वें ई त्रुटि संदेश "Variable or "*" expected." क्या कोई मुझे बता सकता है, इसे सही कैसे बनाया जाए?

+0

कोर SPARQL में COUNT की तरह योग नहीं हैं। आप किस SPARQL एक्सटेंशन के साथ काम कर रहे हैं? – laalto

+0

मुझे लगता है, मैं कोर का उपयोग कर रहा हूं :( – cupakob

+0

@laalto बस एक नोट के रूप में, SPARQL का नवीनतम संस्करण, संस्करण 1.1, 2013 से * * * समेकित शामिल है। –

उत्तर

32

यदि आप जावा और जेना के एआरक्यू का उपयोग कर रहे हैं, तो आप ARQ's extensions for aggregates का उपयोग कर सकते हैं। आपकी क्वेरी कुछ ऐसा दिखाई देगा:

SELECT ?tag (count(distinct ?tag) as ?count) 
WHERE { 
    ?r ns9:taggedWithTag ?tagresource. 
    ?tagresource ns9:name ?tag 
} 
LIMIT 5000 

original SPARQL specification from 2008 समुच्चय को शामिल नहीं किया है, लेकिन the current version, 1.1, from 2013 करता है।

+5

यह नहीं है लेकिन कुल मिलाकर SPARQL में जोड़ा जा रहा है 1.1 और वे व्यापक रूप से लागू होते हैं (जैसा कि उल्लेख किया गया है, विभिन्न एक्सटेंशन के माध्यम से) – dajobe

25

GROUP BY के साथ COUNT(), MIN(), MAX(), SUM(), AVG() का उपयोग करके ट्रिपल के समूहों के लिए सारांश मान उत्पन्न कर सकते हैं। नोट, ये पैटर्न SPARQL 1.1 के लिए विशिष्ट हो सकते हैं।

उदाहरण के लिए, यह एक प्रत्येक के लिए? मूल्य? श्रेणी जोड़ सकते हैं,

SELECT ?category (SUM(?value) as ?valueSum) 
WHERE 
{ 
    ?s ?category ?value . 
} 
GROUP BY ?category 

यह एक के लिए विधेय? पी का उपयोग करता है की संख्या की गणना कर सकते हैं,

SELECT ?p (COUNT(?p) as ?pCount) 
WHERE 
{ 
    ?s ?p ?o . 
} 
GROUP BY ?p 

इन उदाहरणों बॉब डुचर्मे (2011), "स्पैनिश सीखना" से सामग्री से प्रेरित हैं। O'Reilly मीडिया, सेबेस्टोपोल, सीए, यूएसए; देखें http://www.learningsparql.com/

संबंधित मुद्दे