Ich versuche, eine SPARQL-Abfrage mit dem Virtuoso unterstützt bif:contains
Relationen zu leichten String-Matching durchzuführen. Ich möchte überprüfen, ob das Etikett entweder Wort A oder B enthält, so dass ich bin mit einem union
wie folgt:sparql virtuos bif: enthält in einer Union
SELECT DISTINCT ?s ?o WHERE {
?s <http://www.w3.org/2000/01/rdf-schema#label> ?o .
{?o bif:contains "Ramji"}
union {?o bif:contains "Manjhi"}.
}
jedoch, die nicht kompiliert und wirft einen Fehler:
Virtuoso 37000 Error SP031: SPARQL compiler: The group does not contain
triple pattern with '$o' object before bif:contains() predicate
SPARQL query:
define sql:big-data-const 0
#output-format:text/html
define sql:signal-void-variables 1 SELECT DISTINCT ?s ?o WHERE {
?s <http://www.w3.org/2000/01/rdf-schema#label> ?o .
{?o bif:contains "Ramji"}
union {?o bif:contains "Manjhi"}.
}
Wenn nur Eine der Klauseln in der union
wird verwendet, die Abfrage funktioniert. Irgendwelche Vorschläge bitte?
Dank dafür! – Ziqi