私は英語が下手なので、自分の問題を正式に説明することはできません。例を挙げて説明しましょう。以下の表は、実際には「主語」、「述語」によってグループ化されています。
行が同じ「サブジェクト」である場合、行にセットを定義します。ここで、同じ「述語」が含まれる 2 つのセットを結合し、同じ「述語」の「カウント」を合計し、同じセットを持つ個別のサブジェクトの数をカウントしたいと考えています。
subject predicate count
-----------------------------
s1 p1 1
s1 p2 2
s2 p1 3
s3 p1 2
s3 p2 2
したがって、このテーブルから求められるのは 2 つのセットです。
{2, (p1, 3), (p2, 4)},
{1, (p1,3)}
ここで、最初のセットで、2 はこのセットを持つ 2 つのサブジェクト (s1 と s3) があることを示します。(p1,3) は、(s1, p1, 1) と (s3, p1, 2) の合計です。
では、これらのセットを取得して Java に格納するにはどうすればよいでしょうか?
SPARQL を使用してそれを行うにはどうすればよいですか?
または、最初にこれらのトリプルを Java に保存してから、Java を使用してこれらのセットを取得するにはどうすればよいでしょうか?
1 つの解決策は、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
次に、カウントを分離して合計することができます。小さなデータセットでは問題なく動作しますが、非常に時間がかかります。
私はこの奇妙な問題をあきらめると思います。回答ありがとうございました。