Sara Lafia
Sara Lafia

Reputation: 145

Apache Marmotta Delete All Graphs using SPARQL Update

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? enter image description here

Upvotes: 0

Views: 548

Answers (1)

Gabor Szarnyas
Gabor Szarnyas

Reputation: 5047

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:

  1. 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.

  2. 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.

  3. Based on a related StackOverflow answer, I tried CLEAR / CLEAR GRAPH / DROP / DROP GRAPH, but they did not work.

  4. 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.

Upvotes: 2

Related Questions