2012-05-03 26 views
8

bu çok basit bir model, bir COUNT Nasıl yapılır?Verilen 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 . 

Ben öğe listesi ve her vardır etiketlerin sayım sonucuna varmak için çalışıyorum: Burada

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

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

o dönüyor Ancak:

01 benim sorgu

Okuduğum kadarıyla, bu işe yaramalı. Jena 2.6.4

+1

'COUNT' SPARQL 1.0 tarifnamenin bir parçası değildir, bu 1.1 ilave edildi. Bazı uygulamalar buna rağmen destekliyor. Sadece söylüyorum. –

+0

Açıkça ifade edilen soru ve doğru biçimlendirme için yukarı çekildi! – cygri

cevap

6

Kullanmayı denemedim, ancak sorgunun sonuna GROUP BY ?item eklemeyi deneyin. Bence GROUP BY olmadan sadece toplam satır sayısını sayar. ? Etiketi: Eğer bu nedenle bu (?? Tagcount olarak sayımı (etiket))

SEÇ öğe olur Anahtar kelime ile NEREDE { öğe grubu kullanmaya gerek yok sonuçlarında görünmesi bağlanma için

+0

Evet, toplam satır sayısını sayar. Bu durumda da SQL'in yaptığıyla tamamen aynı. Ancak '' item' ile ne olduğunu bilmiyorum. –

3

? Eğer aşağıdakileri yapacağını sorguda ortasında bir şey saymak istiyorsanız tarafından etiketi } grup? öğe

, sen kendi bloğunda {}

SELECT * { 
    ?item a owl:Thing . 

    { 
     SELECT ?item (count(?tag) as ?tagcount) 
     WHERE { 
      ?item :tag ?tag 
     } group by ?item 
    } 
} 
0
içine iç seçme sorgusu koymalıdır nasıl not

alt seçme @ user2316243, bu yüzden, aşağıdaki sorgu eşdeğerdir gereksizdir:

SELECT ?item (count(?tag) as ?tagcount) 
WHERE { 
    ?item a owl:Thing . 
    ?item :tag ?tag . 
} GROUP BY ?item