2012-05-08 15 views
8

Sembra essere possibile contare una singola entità utilizzandoCome interrogare il numero di tuple distinte usando SPARQL 1.1?

(COUNT(DISTINCT ?x) as ?count) 

e per il numero di tuple distinte per tutte le variabili della query utilizzando

(COUNT(DISTINCT *) as ?count) 

Tuttavia, non riesco a capire come contare tuple specifiche (distinte). Qualcosa come

(COUNT(DISTINCT ?a ?b ?c) as ?count) 

non sembra funzionare. Sto sbagliando o non è davvero permesso in SPARQL 1.1? O dovrebbe funzionare e non essere supportato in Sesame 2.6.0 che sto usando per testarlo?

risposta

9

Benvenuti in StackOverflow!

Assicurarsi che il risultato intermedio contiene solo le tre variabili ?a ?b ?c che siete interessati.

Un modo per farlo è quello di utilizzare una sottoquery. La sottoquery proietta solo le tre variabili desiderate. Qualcosa di simile a questo:

SELECT (COUNT(*) AS ?count) { 
    SELECT DISTINCT ?a ?b ?c { 
     … 
    } 
} 

(io non sono sicuro se Sesame supporta subquery.)

Un altro modo è quello di fare semplicemente in modo che la query contiene solo le tre variabili. Se hai bisogno di più variabili all'interno della query, potresti essere in grado di sostituirle con nodi vuoti. I nodi vuoti nei pattern di grafi SPARQL funzionano come "variabili anonime". Ci sono alcuni problemi di scoping divertenti con questo però, quindi l'approccio della sottoquery è probabilmente migliore.

+1

Giusto per confermare che Sesame 2.6 supporta le subquery. L'aggiornamento alla 2.6.5 potrebbe essere una buona idea - ci sono stati diversi bugfix nella valutazione delle subquery dalla 2.6.0. –

+0

Grazie, questo sembra un buon trucco per realizzare questo. Come hai detto, Sesame consente le subquery, quindi sarà fattibile. La tua risposta sembra anche implicare che, in effetti, la definizione del linguaggio SPARQL non consente di formularlo esplicitamente all'interno di un'espressione di conteggio? – Johsm

+0

Non puoi avere più di una variabile in 'COUNT'. È 'COUNT (*)' o 'COUNT (? Var)', con opzionale 'DISTINCT'. – cygri

Problemi correlati