ich einen SPARQL Query-String aus einem Dienst erhalten, die wie die folgenden Abfrage aussieht:Ersetzen gelegten Namen mit URIs in SPARQL Abfrage, die keine Präfixe hat
SELECT * FROM { ?s owl:sameAs ?p }
Wenn ich versuche, das ich mit der QueryFactory
Klasse zu analysieren bekommen das Unresolved Prefixed Name Exception
was total sinnvoll ist.
Ich habe eine Eigenschaftendatei, die die predefined namespace prefixes abbildet.
Für jetzt habe ich eine Abhilfe, die wie folgt aussieht:
Iterator<String> it = prefixConfig.getKeys();
String prefixes = "";
while(it.hasNext()) {
String p = it.next();
prefixes += "PREFIX " + p + ":<" + prefixConfig.getString(p) + "> ";
}
Query q = QueryFactory.create(prefixes + query);
it = prefixConfig.getKeys();
while(it.hasNext()) {
String p = it.next();
q.getPrefixMapping().removeNsPrefix(p);
}
query = q.toString();
Dies funktioniert, aber ich bin nicht glücklich mit dieser Lösung, so meine Frage ist:
Gibt es eine Gute Möglichkeit, entweder die Präfixe in der SPARQL-Abfragezeichenfolge zu ersetzen oder nur die relevanten Präfixe hinzuzufügen?
Vielen Dank im Voraus!
Ich weiß nicht, ob dies funktionieren wird oder nicht, so dass ich bin Entsendung es nicht als Antwort, aber QueryFactory # create() wird eine Abfrage machen mit Keine Analyse, und wird eine Abfrage zurückgeben, die über eine setPrefixMapping() -Methode verfügt, mit der Sie möglicherweise die Präfixe festlegen und anschließend möglicherweise die Abfragezeichenfolge analysieren können. –
Nun, aber ich muss entweder die Abfragezeichenfolge für die Präfixe analysieren und dann die benötigten Präfixe hinzufügen oder alle Präfixe hinzufügen und einfach dasselbe tun:/ Aber ich denke, ich werde mit dem Parsing für jetzt gehen, wie es besser ist Weg. – TortugaAttack
Wie gesagt, ich bin mir nicht sicher, ob es eine Antwort gibt oder nicht. Aber Sie können das Präfix-Mapping nicht erstellen und bekommen, dass jena es in die richtige Art von String für Sie umwandelt, die alle möglichen Fehler bei der Erstellung von Hand entfernen würde –