我对 rdf4j 有疑问:我想从我的 GraphDB 存储库“Feed”中删除所有feed:hashCode
作为谓词的三元组。
第一个查询验证是否存在以url
参数作为主语、feed:hashCode
作为谓词且hash
参数具有宾语的三元组,并且它有效。如果我的存储库中不存在此语句,则第二个查询开始,它应该删除所有feed:hashCode
作为谓词和url
作为主语的三元组,但它不起作用,有什么问题?
这是代码:
public static boolean updateFeedQuery(String url, String hash) throws RDFParseException, RepositoryException, IOException{
Boolean result=false;
Repository repository = new SPARQLRepository("http://localhost:7200/repositories/Feed");
repository.initialize();
try {
try (RepositoryConnection conn = repository.getConnection()) {
BooleanQuery feedUrlQuery = conn.prepareBooleanQuery(
// @formatter:off
"PREFIX : <http://purl.org/rss/1.0/>\n" +
"PREFIX feed: <http://feed.org/>\n" +
"PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n" +
"PREFIX dc: <http://purl.org/dc/elements/1.1/>\n" +
"ASK{\n" +
"<"+url+"> feed:hashCode \""+hash+"\";\n"+
"rdf:type :channel.\n" +
"}"
// @formatter:on
);
result = feedUrlQuery.evaluate();
//the feed is new or updated
if(result == false) {
Update removeOldHash = conn.prepareUpdate(
// @formatter:off
"PREFIX feed: <http://feed.org/>\n" +
"DELETE WHERE{\n"+
"<"+url+"> feed:hashCode ?s.\n" +
"}"
// @formatter:on
);
removeOldHash.execute();
}
}
}
finally {
repository.shutDown();
return result;
}
}
错误代码为:“Missing parameter: query”,服务器响应为:“400 Bad Request”