Sparql SPARUL查询,使用Jena API删除大多数图形
作为单元测试前后清理过程的一部分,我正在尝试使用ApacheJena清除本地triple store中包含的大多数图形。我认为应该这样做。首先,检索要删除的图形URI;然后我执行一个SPARUL Drop操作Sparql SPARUL查询,使用Jena API删除大多数图形,sparql,virtuoso,apache-jena,Sparql,Virtuoso,Apache Jena,作为单元测试前后清理过程的一部分,我正在尝试使用ApacheJena清除本地triple store中包含的大多数图形。我认为应该这样做。首先,检索要删除的图形URI;然后我执行一个SPARUL Drop操作 String sparqlEndpointUsername = ...; String sparqlEndpointPassword = ...; String sparqlQueryString = ...; // Returns the URIs of the graphs to be
String sparqlEndpointUsername = ...;
String sparqlEndpointPassword = ...;
String sparqlQueryString = ...; // Returns the URIs of the graphs to be deleted
HttpAuthenticator authenticator = new SimpleAuthenticator(sparqlEndpointUsername,
sparqlEndpointPassword.toCharArray());
ResultSet resultSetToReturn = null;
try (QueryEngineHTTP queryEngine = new QueryEngineHTTP(sparqlEndpoint, sparqlQueryString, authenticator)) {
resultSetToReturn = queryEngine.execSelect();
resultSetToReturn = ResultSetFactory.copyResults(resultSetToReturn);
while(resultSetToReturn.hasNext()){
String graphURI = resultSetToReturn.next().getResource("?g").getURI();
UpdateRequest request = UpdateFactory.create() ;
request.add("DROP GRAPH <"+graphURI+">");
Dataset dataset = ...; // how can I create a default dataset pointing to my local virtuoso installation?
// And perform the operations.
UpdateAction.execute(request, dataset) ;
}
}
;
String sparqlenpointusername=。。。;
字符串sparqlEndpointPassword=。。。;
字符串sparqlQueryString=…;//返回要删除的图形的URI
HttpAuthenticator authenticator=新的SimpleAuthenticator(sparqlEndpointUsername,
sparqlendpassword.toCharArray());
ResultSet resultSetToReturn=null;
try(QueryEngineHTTP queryEngine=newqueryenginehttp(sparqlenpoint,sparqlQueryString,authenticator)){
resultSetToReturn=queryEngine.execSelect();
resultSetToReturn=ResultSetFactory.copyResults(resultSetToReturn);
while(resultSetToReturn.hasNext()){
String graphURI=resultSetToReturn.next().getResource(“?g”).getURI();
UpdateRequest请求=UpdateFactory.create();
请求。添加(“下拉图”);
Dataset Dataset=…;//如何创建指向本地virtuoso安装的默认数据集?
//并执行操作。
执行(请求、数据集);
}
}
;
问题:
请注意,我不是在试图删除所有图表。我只删除名称通过开头(第3行)定义的SPARQL查询返回的图形。您的问题似乎是针对Virtuoso的,旨在删除所有RDF数据,因此您可以使用 这不是SPARQL/SPARUL查询;它通常通过SQL连接发布——可以是JDBC、ODBC、ADO.NET、OLE DB、iSQL等 也就是说,当您通过SPARUL特权连接进行连接时,您应该能够使用-- (通过非特权连接(如默认SPARQL端点)执行此操作将导致出现类似以下错误的错误:
Virtuoso 37000 error SP031:SPARQL编译器:函数bif:RDF_GLOBAL_RESET(),由于安全限制,无法在SPARQL查询的文本中使用
)
(ObDisclaimer:products,and employee me。)您的问题似乎是针对Virtuoso的,旨在删除所有RDF数据,以便您可以使用 这不是SPARQL/SPARUL查询;它通常通过SQL连接发布——可以是JDBC、ODBC、ADO.NET、OLE DB、iSQL等 也就是说,当您通过SPARUL特权连接进行连接时,您应该能够使用-- (通过非特权连接(如默认SPARQL端点)执行此操作将导致出现类似以下错误的错误:
Virtuoso 37000 error SP031:SPARQL编译器:函数bif:RDF_GLOBAL_RESET(),由于安全限制,无法在SPARQL查询的文本中使用
)
(ObDisclaimer:products,and employees me。)您可以构建一个SPARQL更新请求:
DROP GRAPH <g1> ;
DROP GRAPH <g2> ;
DROP GRAPH <g3> ;
... ;
DROP图;
落差图;
落差图;
... ;
因为在SPARQL更新中,一个HTTP请求可以是多个更新操作,由
分隔代码>您可以生成单个SPARQL更新请求:
DROP GRAPH <g1> ;
DROP GRAPH <g2> ;
DROP GRAPH <g3> ;
... ;
DROP图;
落差图;
落差图;
... ;
因为在SPARQL更新中,一个HTTP请求可以是多个更新操作,由分隔代码>在没有下拉菜单的情况下。。。其中…
在SPARQL更新中,我认为这是您所能做的最好的了。jena代码可能需要清理一点,但基本上您需要执行“graphs to remove”查询,然后进行更新。@user205512非常感谢您的时间。你能为第一个问题提供一个提示/答案吗。可移植的答案是通过sparql http协议,我认为Virtuoso支持该协议,可能会起作用?更正:可移植的答案是通过sparql http协议,我认为Virtuoso支持该协议。对于查询和更新,我想?在没有下拉菜单的情况下。。。其中…
在SPARQL更新中,我认为这是您所能做的最好的了。jena代码可能需要清理一点,但基本上您需要执行“graphs to remove”查询,然后进行更新。@user205512非常感谢您的时间。你能为第一个问题提供一个提示/答案吗。可移植的答案是通过sparql http协议,我认为Virtuoso支持该协议,可能会起作用?更正:可移植的答案是通过sparql http协议,我认为Virtuoso支持该协议。对于我想的查询和更新?非常感谢您的回答。然而,我并没有真正删除所有的图。我正在删除通过开头(第3行)中定义的SPARQL查询返回名称的图形。非常感谢您的回答。然而,我并没有真正删除所有的图。我正在删除名称通过开头(第3行)中定义的SPARQL查询返回的图。