7
由於我的英文不好,我無法正式描述我的問題;讓我用一個例子來講述它。 下面的表格實際上是由'subject','predicate'分組的。在SPARQL中結合多組行數
我們在行上定義一個集合,如果它們是相同的'主題'。現在,我想要將任意兩個集合組合在一起,如果它們包含相同的謂詞,將相同「謂詞」的「計數」相加,並計算具有相同集合的不同主題的數量。
subject predicate count
-----------------------------
s1 p1 1
s1 p2 2
s2 p1 3
s3 p1 2
s3 p2 2
因此,所從該表中希望是兩組:
{2, (p1, 3), (p2, 4)},
{1, (p1,3)}
其中在第一組,2表示有兩個受試者(S1和S3)具有該組; (p1,3)是來自(s1,p1,1)和(s3,p1,2)的和。
那麼如何檢索這些集合並將它們存儲在Java中?
我該如何使用SPARQL做到這一點?或者,首先將這些三元組存儲在Java中,然後如何使用Java獲得這些集合?
一種解決方案可能是Concat的謂詞和計數,
SELECT (COUNT(?s) AS ?distinct)
?propset
(group_concat(?count; separator = \"\\t\") AS ?counts)
{
SELECT ?s
(group_concat(?p; separator = \" \") AS ?propset)
(group_concat(?c; separator = \" \") AS ?count
{
?s ?p ?c
} GROUP BY ?s ORDER BY ?s
} GROUP BY ?propset ORDER BY ?propset
然後計數可以分離,再總結。 它在小數據集上工作正常,但非常耗時。
我想我會放棄這個奇怪的問題。 非常感謝您的回答。
是的我的意思是's1和s3具有相同的組'。對於錯字感到抱歉,我修改了它(並且改變了s2的謂詞值使其更加清晰)。但是,我想要的結果是'套集'。兩個集合{p1,p2}和{p1}不能組合,因爲它們不同。因此,我們不僅要總結每個相同謂詞的價值。謝謝你的回答:) – bobharris
啊,明白了。這可能很難,但我已經添加了第二遍。 – user205512
它幾乎接近我想要的:)但它繼續運行,似乎它不會給任何結果。此外,如果這個查詢成功了,我怎樣才能從結果表中檢索這些集合?我只能看到結果表包含兩列,但沒有提供關於這些集合的信息。對於結果,他們將被存儲在Java中,所以...實際上我只是想要這些結果。再次感謝你。 – bobharris