Ci sono alcuni modi per farlo. Il metodo SPARQL 1.0 più semplice e puro è quello di utilizzare UNION
ad es.
SELECT * WHERE
{
{ ?s _:prop "v1" } UNION { ?s _:prop "v2" }
# Use ?s in other patterns
}
Questo è probabilmente il metodo più semplice, ma se avete bisogno di più vincoli su ?s
questo può ottenere rapidamente ingombrante.
Il secondo metodo consiste nell'utilizzare la funzione IN
in una clausola FILTER
, che richiede un'implementazione SPARQL 1.1 ad es.
SELECT * WHERE
{
?s _:prop ?value .
FILTER(?value IN ("v1", "v2"))
# Use ?s in other patterns
}
problema qui è che l'utilizzo IN
può eseguire molto male se si dispone di molte alternative o un sacco di dati che può essere accompagnata da ?s _:prop ?value
terzo metodo è quello di utilizzare la clausola VALUES
che richiede ancora una volta uno SPARQL 1.1 implementazione:
SELECT * WHERE
{
VALUES (?value) { ("v1") ("v2 ") }
?s _:prop ?value .
# Use ?s in other patterns
}
Questo è probabilmente l'opzione migliore dal momento che le scale a molte alternative migliori (a seconda dell'implementazione SPARQL) ed è forse la più bella a leggere e scrivere.