No puedo describir mi problema formalmente debido a mi mal inglés; déjame decirte usando un ejemplo. La tabla a continuación está en realidad agrupada por 'sujeto', 'predicado'.Combinar múltiples conjuntos de filas en SPARQL
Definimos un conjunto en filas, si tienen el mismo 'asunto'. Ahora quiero combinar dos conjuntos si contienen el mismo 'predicado', suma el 'recuento' del mismo 'predicado' y cuenta el número de sujetos distintos que tienen el mismo conjunto.
subject predicate count
-----------------------------
s1 p1 1
s1 p2 2
s2 p1 3
s3 p1 2
s3 p2 2
Por lo tanto, lo que quería de esta tabla es dos conjuntos:
{2, (p1, 3), (p2, 4)},
{1, (p1,3)}
donde en el primer conjunto, 2 indica que hay dos sujetos (S1 y S3) que tiene este conjunto; (p1,3) es la suma de (s1, p1, 1) y (s3, p1, 2).
Entonces, ¿cómo puedo recuperar estos conjuntos y almacenarlos en Java?
¿Cómo puedo hacerlo usando SPARQL?
O, primero almacene estos triples en Java, entonces ¿cómo puedo obtener estos conjuntos usando Java?
Una solución podría ser concat predicados y los recuentos,
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
A continuación, los conteos se puede desacoplar, a continuación, resumen. Funciona bien en pequeños conjuntos de datos, pero consume mucho tiempo.
Creo que abandonaré este extraño problema. Muchas gracias por responder.
sí, quiero decir 's1 y s3 tienen el mismo conjunto'. perdón por el error tipográfico, lo he modificado (y cambiado el valor del predicado de s2 para hacerlo más claro). Sin embargo, el resultado que quiero es 'el conjunto de conjuntos'. Dos conjuntos, digamos {p1, p2} y {p1}, no pueden combinarse ya que son diferentes. Por lo tanto, no solo sumaríamos el valor de cada mismo predicado. Gracias por responder :) – bobharris
Ah, lo tengo. Eso puede ser difícil, pero he agregado un segundo pase. – user205512
Es casi lo que quiero :), pero sigue funcionando y parece que no dará ningún resultado. Además, si esta consulta tiene éxito, ¿cómo puedo recuperar esos conjuntos de la tabla resultante?Solo puedo ver que la tabla resultante contiene dos columnas, pero no da información sobre los conjuntos. Para los resultados, se almacenarán en Java, así que ... en realidad solo quiero estos resultados. Gracias de nuevo. – bobharris