0

我正在尝试将所有加载的图表清除到我的 Apache Marmotta 实例中。我已经尝试了几个 SPARQL 查询来执行此操作,但我无法删除我导入的 RDF/XML 图。这样做的适当语法是什么? 在此处输入图像描述

4

1 回答 1

2

试试这个查询:

DELETE WHERE { ?x ?y ?z }

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

我为实验做了几件事:

  1. 我下载了Marmotta的源代码,并使用Silver SearcherDELETE工具通过以下命令搜索查询:

    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. 基于相关的 StackOverflow 答案,我尝试了CLEAR/// CLEAR GRAPH,但它们没有用。DROPDROP GRAPH

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

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

于 2016-11-22T00:28:07.857 回答