我正在尝试使用以下查询:
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 我在用jena 整个东西都在一个有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)
答案 0 :(得分:4)
CONSTRUCT
查询会导致模型,而不是结果集。你需要使用:
Model model = qe.execConstruct();
您不能拥有“同时包含构造和选择”的查询。 (除非你的意思是包含子选择的构造?)
您可能会发现以下内容:
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? ... }