Es gibt ein paar Möglichkeiten, dies zu tun. Die einfachste und reinste SPARQL 1.0-Methode ist die Verwendung von UNION
, z.
SELECT * WHERE
{
{ ?s _:prop "v1" } UNION { ?s _:prop "v2" }
# Use ?s in other patterns
}
Dies ist wahrscheinlich die einfachste Methode, aber wenn Sie auf ?s
mehrere Einschränkungen benötigen, können diese schnell unhandlich bekommen.
Die zweite Methode besteht darin, die IN
-Funktion in einer FILTER
-Klausel zu verwenden, dies erfordert eine SPARQL 1.1-Implementierung, z.
SELECT * WHERE
{
?s _:prop ?value .
FILTER(?value IN ("v1", "v2"))
# Use ?s in other patterns
}
Problem hier ist, dass IN
mit sehr schlecht durchführen können, wenn Sie viele Alternativen oder eine Menge von Daten, die durch ?s _:prop ?value
Drittes Verfahren angepasst werden kann, ist die VALUES
Klausel zu verwenden, die wieder eine SPARQL erfordert 1.1 Umsetzung:
SELECT * WHERE
{
VALUES (?value) { ("v1") ("v2 ") }
?s _:prop ?value .
# Use ?s in other patterns
}
Dies ist wahrscheinlich die beste Option, da es zu viele Alternativen besser skaliert (je nach SPARQL-Implementierung) und ist vielleicht das schönste zu lesen und zu schreiben.