我正在尝试将所有加载的图表清除到我的 Apache Marmotta 实例中。我已经尝试了几个 SPARQL 查询来执行此操作,但我无法删除我导入的 RDF/XML 图。这样做的适当语法是什么?
问问题
482 次
1 回答
2
试试这个查询:
DELETE WHERE { ?x ?y ?z }
小心,因为它会删除数据库中的每个三元组,包括 Marmotta 的内置三元组。
我为实验做了几件事:
我下载了Marmotta的源代码,并使用Silver Searcher
DELETE
工具通过以下命令搜索查询:ag '"DELETE '
这没有多大帮助。
我导航到 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
。基于相关的 StackOverflow 答案,我尝试了
CLEAR
///CLEAR GRAPH
,但它们没有用。DROP
DROP GRAPH
我尝试了许多 , 和 的组合,
DELETE
并且意外地设法让它与DELETE WHERE构造一起使用。根据 W3C 文档:*
?s ?p ?p
DELETE WHERE 操作是 DELETE/INSERT 操作的快捷形式,其中与 WHERE 子句匹配的绑定用于定义图中将被删除的三元组。
于 2016-11-22T00:28:07.857 回答