I am trying to clear all loaded graphs into my Apache Marmotta instance. I have tried several SPARQL queries to do so, but I am not able to remove the RDF/XML graph that I imported. What is the appropriate syntax to do so?

- 135
- 1
- 1
- 8
1 Answers
Try this query:
DELETE WHERE { ?x ?y ?z }
Be careful, as it deletes every triple in the database, including the built-in ones of Marmotta.
A couple of things I did for experimenting:
I downloaded the source code of Marmotta and used the Silver Searcher tool for searching for
DELETE
queries with the following command:ag '"DELETE '
This did not help much.
I navigated to the Marmotta installation directory and watched the debug log:
tail -f marmotta-home/log/marmotta-main.log
This showed that the parser is not able to process the query
DELETE DATA { ?s ?p ?o }
. The exception behind the "error while executing update" was:org.openrdf.sail.SailException: org.openrdf.rio.RDFParseException: Expected an RDF value here, found '?' [line 8] [followed by a long stacktrace]
This shows that the parser does not allow variables in the query after
DELETE DATA
.Based on a related StackOverflow answer, I tried
CLEAR
/CLEAR GRAPH
/DROP
/DROP GRAPH
, but they did not work.I tried many combinations of
DELETE
,*
,?s ?p ?p
and accidentally managed to get it working with the DELETE WHERE construct. According to the W3C documentation:The DELETE WHERE operation is a shortcut form for the DELETE/INSERT operation where bindings matched by the WHERE clause are used to define the triples in a graph that will be deleted.

- 1
- 1

- 4,410
- 3
- 18
- 42
-
This didn't work and returned "malformed query, update failed" – Sara Lafia Nov 22 '16 at 02:31
-
@SaraLafia I think I found the solution - I updated the answer and will add some details shortly. – Gabor Szarnyas Nov 22 '16 at 02:53