Apache Marmotta使用SPARQL Update删除所有图表

时间:2016-11-22 00:22:05

标签: sparql apache-marmotta

我正在尝试将所有加载的图表清除到我的Apache Marmotta实例中。我已经尝试了几个SPARQL查询,但是我无法删除我导入的RDF / XML图。这样做的适当语法是什么? enter image description here

1 个答案:

答案 0 :(得分:2)

尝试此查询:

DELETE WHERE { ?x ?y ?z }

小心,因为它会删除数据库中的每个三元组,包括内置的Marmotta。

我为实验做了几件事:

  1. 我下载了Marmotta的source code,并使用Silver Searcher工具使用以下命令搜索DELETE个查询:

    ag '"DELETE '
    

    这没什么用。

  2. 我导航到Marmotta安装目录并观看了调试日志:

    tail -f marmotta-home/log/marmotta-main.log
    

    这表明解析器无法处理查询DELETE DATA { ?s ?p ?o }。执行更新时#"错误背后的例外"是:

    org.openrdf.sail.SailException: org.openrdf.rio.RDFParseException: Expected an RDF value here, found '?' [line 8]
    [followed by a long stacktrace]
    

    这表明解析器在DELETE DATA之后不允许查询中的变量。

  3. 根据related StackOverflow answer,我尝试了CLEAR / CLEAR GRAPH / DROP / DROP GRAPH,但它们无效。

  4. 我尝试了DELETE*?s ?p ?p的多种组合,并意外地设法让它与DELETE WHERE构造一起使用。根据W3C文档:

      

    DELETE WHERE操作是DELETE / INSERT操作的快捷方式,其中WHERE子句匹配的绑定用于定义将被删除的图形中的三元组。