如何解决尝试从CONSTRUCT查询Exception中获取ResultSet
|| 我正在尝试使用以下查询:QUERY=\"PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> \\n\" +
\" PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> \\n\" +
\"CONSTRUCT { \\n\" +
\"?cls ?cp ?co . \\n\" +
\" ?prop ?pp ?po . \\n\" +
\"}\" +
\"WHERE { \\n\" +
\"?cls a rdfs:Class . \\n\" +
\"?cls ?cp ?co . \\n\" +
\"?prop a rdf:Property . \\n\" +
\"?prop ?pp ?po . \\n \" +
\"}\";
results = qe.execSelect();
查询在字符串变量QUERY中。
我正在使用耶拿
整个过程都在具有2个按钮的界面中。
当用户单击button1时,QUERY进行选择查询;如果用户单击button2,则进行上述查询
如果QUERY同时包含构造和选择,则发出以下异常
线程\“ AWT-EventQueue-0 \” com.hp.hpl.jena.query.QueryExecException中的异常:尝试从CONSTRUCT查询获得ResultSet
在com.hp.hpl.jena.sparql.engine.QueryExecutionBase.execSelect(QueryExecutionBase.java:93)
解决方法
“ 1”个查询产生一个模型,而不是结果集。您需要使用:
Model model = qe.execConstruct();
您不能有一个包含“ construct和select \”的查询。 (除非您的意思是包含子选择的构造?)
您可能会发现以下有用:
Query q = QueryFactory.create(QUERY);
if (q.isSelectType()) { ... execSelect,deal with results ... }
else if (q.isConstructType()) { ... execConstruct,deal with result model ... }
else { ... do you deal with DESCRIBE? ... }