简体   繁体   English

如何使用 jena 执行 Sparql 删除查询?

[英]How to execute Sparql delete query using jena?

I'm trying to execute a delete query using Jena, but I'm getting an error while executing it.我正在尝试使用 Jena 执行删除查询,但在执行时出现错误。 I've tried two ways, but in both cases, I'm getting the same error.我尝试了两种方法,但在这两种情况下,我都遇到了相同的错误。 I'm using jena 2.7.3 and database virtuoso 6.01.3.我正在使用 jena 2.7.3 和数据库 virtuoso 6.01.3。

Code 1:代码 1:

String queryString; // deleteQuery.
Model m = VirtModel.openDatabaseModel(file, connectionURL, username, password); 
UpdateAction.parseExecute(queryString, m);

Code 2:代码 2:

String queryString; // deleteQuery
Model m = VirtModel.openDatabaseModel(file, connectionURL, username, password); 
GraphStore gs = GraphStoreFactory.create();
gs.setDefaultGraph(m.getGraph());            
UpdateRequest ur = UpdateFactory.create(queryString);            
UpdateAction.execute(ur.getOperations().get(0),gs);

Error:错误:

java.lang.InstantiationError: com.hp.hpl.jena.sparql.engine.binding.BindingMap at virtuoso.jena.driver.VirtuosoQueryEngine$VQueryIterator.extractRow(Unknown Source) at virtuoso.jena.driver.VirtuosoQueryEngine$VQueryIterator.moveForward(Unknown Source) at virtuoso.jena.driver.VirtuosoQueryEngine$VQueryIterator.hasNextBinding(Unknown Source) at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:108) at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorWrapper.hasNextBinding(QueryIteratorWrapper.java:40) at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:108) at org.openjena.atlas.data.AbstractDataBag.addAll(AbstractDataBag.java:74) at com.hp.hpl.jena.sparql.modify.UpdateEngineWorker.visit(UpdateEngineWorker.java:348) at com.hp.hpl.jena.sparql.modify.request.UpdateModify.visit(UpdateModify.java:97) at com.hp.hpl.jena.sparql.modify.UpdateEngineMain.execute(UpdateEngineMain.java:40) at com.hp.hpl.jena.sparql.modi java.lang.InstantiationError: com.hp.hpl.jena.sparql.engine.binding.BindingMap at virtuoso.jena.driver.VirtuosoQueryEngine$VQueryIterator.extractRow(Unknown Source) at virtuoso.jena.driver.VirtuosoQueryEngine$VQueryIterator.moveForward( Unknown Source) at virtuoso.jena.driver.VirtuosoQueryEngine$VQueryIterator.hasNextBinding(Unknown Source) at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:108) at com.hp.hpl .jena.sparql.engine.iterator.QueryIteratorWrapper.hasNextBinding(QueryIteratorWrapper.java:40) at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:108) at org.openjena.atlas .data.AbstractDataBag.addAll(AbstractDataBag.java:74) 在 com.hp.hpl.jena.sparql.modify.UpdateEngineWorker.visit(UpdateEngineWorker.java:348) 在 com.hp.hpl.jena.sparql.modify.request .UpdateModify.visit(UpdateModify.java:97) at com.hp.hpl.jena.sparql.modify.UpdateEngineMain.execute(UpdateEngineMain.java:40) at com.hp.hpl.jena.sparql.modi fy.UpdateProcessorBase.execute(UpdateProcessorBase.java:56) at com.hp.hpl.jena.update.UpdateAction.execute$(UpdateAction.java:330) at com.hp.hpl.jena.update.UpdateAction.execute(UpdateAction.java:323) at com.hp.hpl.jena.update.UpdateAction.execute(UpdateAction.java:283) at com.hp.hpl.jena.update.UpdateAction.execute(UpdateAction.java:237) at com.tcs.ignite.plc.DAOs.ConceptDAO.deleteConceptByURI(ConceptDAO.java:75) at com.tcs.ignite.plc.utilities.ContextListener.contextInitialized(ContextListener.java:35) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4723) at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5226) at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5221) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPo fy.UpdateProcessorBase.execute(UpdateProcessorBase.java:56) at com.hp.hpl.jena.update.UpdateAction.execute$(UpdateAction.java:330) at com.hp.hpl.jena.update.UpdateAction.execute(UpdateAction) .java:323) 在 com.hp.hpl.jena.update.UpdateAction.execute(UpdateAction.java:283) 在 com.hp.hpl.jena.update.UpdateAction.execute(UpdateAction.java:237) 在 com。 tcs.ignite.plc.DAOs.ConceptDAO.deleteConceptByURI(ConceptDAO.java:75) at com.tcs.ignite.plc.utilities.ContextListener.contextInitialized(ContextListener.java:35) at org.apache.catalina.core.StandardContext。 listenerStart(StandardContext.java:4723) at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5226) at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5221) at java .util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 在 java.util.concurrent.FutureTask.run(FutureTask.java:138) 在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java) :886) 在 java.util.concurrent.ThreadPo olExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) olExecutor$Worker.run(ThreadPoolExecutor.java:908) 在 java.lang.Thread.run(Thread.java:662)

Does anyone know why I'm getting this error?有谁知道我为什么会收到这个错误?

The comment reference is to OWLIM, not Virtuoso.评论参考是 OWLIM,而不是 Virtuoso。 The cause is the same though - bad mix of versions.原因是一样的 - 版本混合不好。 You need to find out which version of Jena to use with database virtuoso 6.01.3.您需要找出与数据库 virtuoso 6.01.3 一起使用的 Jena 版本。

An alternative is to run the Virtuoso database as a server and connect to it over the SPARQL protocol.另一种方法是将 Virtuoso 数据库作为服务器运行并通过 SPARQL 协议连接到它。 Then the version of Jena (the SPARQL protocol client) is not tied to the version sync'ed to Virtuoso.然后 Jena 的版本(SPARQL 协议客户端)与同步到 Virtuoso 的版本无关。

Use the next code for send your query directly to Virtuoso server without using any Jena SPARQL parsers/executors.使用下一个代码将您的查询直接发送到 Virtuoso 服务器,而无需使用任何 Jena SPARQL 解析器/执行器。

String queryString; // deleteQuery
Model m = VirtModel.openDatabaseModel(file, connectionURL, username, password); 
VirtuosoUpdateRequest vur = VirtuosoUpdateFactory.create(str, m);
vur.exec();  

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM