2016-04-12 8 views
1

Ich schreibe das Backend für eine OWL-Datenbank und muss prüfen, ob das Löschen oder das Einfügen einer Dreiergruppe erfolgreich war.JENA - Überprüfen, ob eine SPARQL-Aktualisierungsabfrage fehlschlägt oder nicht

Was ich bis jetzt bekommen haben sieht so aus:

String queryUpdate = 
/*Update String*/ 
     UpdateRequest request = UpdateFactory.create(queryUpdate); 
     UpdateProcessor proc = UpdateExecutionFactory.create(request, graphStore); 
     proc.execute(); 

Also, was ich brauche so etwas wie ein boolean Wert aus dem proc.execute() -Methode ist.

Gibt es etwas Vergleichbares?

Antwort

0

Transaktionen wären eine gute Idee, wenn mehrere Threads auf die Daten zugreifen. Wenn dies alles single-threaded ist, ist die Konsistenz kein Problem.

Was bedeutet "Erfolg"? Das SPARQL-Update war legal und wurde ausgeführt oder ob die Daten in irgendeiner Weise verändert wurden?

Für die ehemalige, erhalten Sie eine Ausnahme.

Wenn es das letztere ist, ist es nicht die Aufgabe von proc.execute (wie würde es wissen?). Ein nützlicher Ansatz besteht darin, eine Bedingung in die Daten einzugeben, um ihren Zustand aufzuzeichnen. Dies geschieht als Teil des Updates.

... operation1 ... 
; 
... operation2 ... 
; 
INSERT { [] :succeded true } 
WHERE { 
    ... test condition ... 
} 
0

Nun, ich bin mir nicht sicher, ob Sie es so machen können. Ich kann Ihnen jedoch empfehlen, Jena TDB Transactions zu verwenden, da Sie ACID-Transaktionen dort unterstützen können. So können Sie überprüfen, ob Ihre Operationen erfolgreich sind oder fehlschlagen.

Verwandte Themen