2012-05-03 12 views
8

में एक COUNT कैसे करना है:यह बहुत ही साधारण मॉडल को देखते हुए SPARQL

@prefix :  <http://example.org/tags#> . 
@prefix owl:  <http://www.w3.org/2002/07/owl#> . 
@prefix rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . 
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . 
@prefix xsd:  <http://www.w3.org/2001/XMLSchema#> . 

:tag rdf:type rdf:Property . 

:item1 
     rdf:type owl:Thing ; 
     :tag "a"^^xsd:string . 

:item2 
     rdf:type owl:Thing ; 
     :tag "a"^^xsd:string , "b"^^xsd:string . 

:item3 
     rdf:type owl:Thing ; 
     :tag "a"^^xsd:string , "b"^^xsd:string , "c"^^xsd:string . 

मैं मदों की एक सूची और टैग की गिनती प्रत्येक है कि प्राप्त करने के लिए कोशिश कर रहा हूँ:

item tagCount 
===== ======== 
item1 1 
item2 2 
item3 3 

यहाँ

SELECT ?item (count(?tag) as ?tagcount) 
WHERE { 
    ?item :tag ?tag 
} 

हालांकि यह लौटा रहा है:

01 मेरी क्वेरी है

जो मैंने पढ़ा है, उससे यह काम करना चाहिए। मैं जेना 2.6.4

+1

'COUNT' SPARQL 1.0 विनिर्देश का एक हिस्सा नहीं है, यह 1.1 में जोड़ा गया है। कुछ कार्यान्वयन इसके बावजूद इसका समर्थन करते हैं। बस केह रहा हू। –

+0

स्पष्ट रूप से व्यक्त प्रश्न और उचित प्रारूपण के लिए उपरोक्त! – cygri

उत्तर

6

का उपयोग कर रहा हूं मैंने कोशिश नहीं की है, लेकिन क्वेरी के अंत में GROUP BY ?item जोड़ने का प्रयास करें। मुझे लगता है कि GROUP BY के बिना यह सिर्फ पंक्तियों की कुल संख्या की गणना करता है। ? टैग:

+0

हां, यह पंक्तियों की कुल संख्या की गणना करता है। यह वही है जैसा एसक्यूएल इस मामले में भी करता है। हालांकि, मुझे नहीं पता कि 'आइटम' के साथ क्या होता है। –

3
परिणामों में प्रकट आप तो यह हो जाता है

का चयन करें (? Tagcount के रूप में गिनती (टैग)) मद कीवर्ड द्वारा समूह का उपयोग करने के जहाँ { आइटम की क्या ज़रूरत है बंधन के लिए

? टैग } समूह द्वारा? आइटम

आप क्वेरी के बीच में कुछ आप निम्नलिखित करना होगा की गणना करना चाहते हैं, तो ध्यान दें कि कैसे आप अपने स्वयं के ब्लॉक {}

SELECT * { 
    ?item a owl:Thing . 

    { 
     SELECT ?item (count(?tag) as ?tagcount) 
     WHERE { 
      ?item :tag ?tag 
     } group by ?item 
    } 
} 
0
में भीतरी चयन क्वेरी करना होगा

द उप चयन @ user2316243 द्वारा इसलिए निम्न क्वेरी बराबर है अनावश्यक है,:

SELECT ?item (count(?tag) as ?tagcount) 
WHERE { 
    ?item a owl:Thing . 
    ?item :tag ?tag . 
} GROUP BY ?item 
संबंधित मुद्दे