2012-08-09 59 views
2

我想過濾計數結果。我使用以下查詢:SPARQL過濾COUNT

SELECT (COUNT(*) AS ?total) 
WHERE { 
    ?s sf:RatioSWO ?o . 
} 
GROUP BY ?total 

這隻給出了謂詞的總行數。我試過在COUNT(*)之後放置一個「< 0.5」來進行過濾,但這只是給我帶來「假」的結果,我不知道這意味着什麼。我也試過HAVING和FILTER,但都沒給我結果。

+1

你想要什麼查詢返回? 'COUNT(*)<0.5'僅僅意味着你檢查與三元組sf:RatioSWO?o相匹配的結果數是否小於0.5,這是沒有意義的。如果有任何結果,它會給你'true',否則給你'false'。你必須更清楚。 – toniedzwiedz 2012-08-09 18:04:41

+0

更何況,在這種情況下,'GROUP BY'語句似乎不合邏輯。在這個查詢中,你正在使用一個應該是它的結果的變量。這在語法上不正確。它永遠不會被分配。它如何返回任何東西? – toniedzwiedz 2012-08-09 18:12:19

回答

3

我不太清楚你想要什麼來實現的,但是這個怎麼樣:

SELECT (COUNT(*) AS ?total) 
WHERE { 
    ?s sf:RatioSWO ?o . 
    FILTER (?o < 0.5) 
} 

此功能可統計sf:RatioSWO三元其中值大於0.5的數量。 ?

13

如果你想返回總-S其中總爲< 0.5,你可以這樣做:

SELECT (COUNT(*) AS ?total) 
WHERE { 
    ?s sf:RatioSWO ?o . 
} 
GROUP BY ?s 
HAVING (?total < 0.5) 

從這個問題目前還不清楚你的意思。