Meine Stardog-Datenbank enthält Dienstbeschreibungen von SPARQL-Endpunkten. Ich bin jetzt versuchen, einen bestimmten Dienst auszuwählen und es in der Abfrage aufrufen, wie beschrieben in https://www.w3.org/TR/2013/REC-sparql11-federated-query-20130321/#valuesStartdog Federated Query mit Variablendienst
PREFIX void: <http://rdfs.org/ns/void#>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX doap: <http://usefulinc.com/ns/doap#>
SELECT ?service ?projectName
WHERE {
# Find the service with subject "remote".
?p dc:subject ?projectSubject ;
void:sparqlEndpoint ?service .
FILTER regex(?projectSubject, "remote")
# Query that service projects.
SERVICE ?service {
?project doap:name ?projectName . }
}
Unforunately, wirft Stardog eine Ausnahme, mir zu sagen, dass die Variable nicht eine URI ist:
com.complexible.stardog.plan.eval.operator.OperatorException: Cannot execute a service query with a variable ref which binds to non-URI values
Das Darstellen der "? Service" -Variable in einer BIND-Anweisung mit dem IRI-Konstruktor und Verwenden der gebundenen Variablen hilft ebenfalls nicht. Wie kann sichergestellt werden, dass es sich bei der Variablen um eine IRI handelt, damit Stardog die föderierte Abfrage ausführen kann?