首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关闭查询后获得耶拿结果集-用于模块化

关闭查询后获得耶拿结果集-用于模块化
EN

Stack Overflow用户
提问于 2014-06-19 04:23:05
回答 1查看 142关注 0票数 2

我有以下情况:

  • Class B有一个方法,它接收带有查询的字符串,执行它并返回Resultset
  • Class A创建一个SPARQL查询并在Class B中调用该方法。

问题是,当Class A取回Resultset对象时,它是空的!当然,因为查询是在Class B中关闭的(参见jena.query.ResultSet和jena.query.QuerySolution: SPARQL请求后的空迭代器)。

我的问题是,这怎么能成为模块化的呢?我希望有一个只执行SPARQL查询的Class B,而不必知道结果结构或任何东西。我希望Class B处理查询创建和查询结束,因为Class A这样做没有任何意义。

代码语言:javascript
复制
Class B:

 try {
            Query query = QueryFactory.create(myQuery);
            qe = QueryExecutionFactory.create(query, ontology);
            ResultSet results = qe.execSelect();
            return results;
        } catch (...){
            ...
        } finally {
            ...
                qe.close();
            }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-19 09:25:30

默认情况下,ResultSet几乎总是流的,所以您正确地说关闭QueryExecution将导致ResultSet的行为就好像它是空的。

您可以使用ResultSet方法在内存中使用可重用的副本,并将其传回。

代码语言:javascript
复制
ResultSet results = ResultSetFactory.copyResults(qe.execSelect());

这允许B类安全地关闭QueryExecution,并为调用代码提供一个非空的ResultSet,前提是查询首先生成任何答案!

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24298748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档