0

我在使用 protege 3.x 创建的 OWL 'ressu.owl' 文件上查询了 Sparql。我必须指出将结果集转换为像 JTextArea 这样可用的东西ResultSetFormatter()

我这样用

ResultSetFormatter.out(System.out, results, query) ;

它在 Netbeans 的控制台中给了我这个结果:

在此处输入图像描述

但是当我尝试将 System.out 返回到 String ::

com.hp.hpl.jena.query.ResultSet results = qe.execSelect();
ResultSetFormatter.out(System.out, results, query) ;
ByteArrayOutputStream go = new ByteArrayOutputStream ();
ResultSetFormatter.out((OutputStream)go ,results, query);
String result = go.toString();
jTextArea1.setText(result);

它只在 JtextArea 中显示

---------------------------------------------------------------
| hasnamefonctioncontrainte        | hasnamefonctionprincipale 
===============================================================

帮助 非常感谢

4

2 回答 2

2

result是一个迭代器。

你打印出来的

ResultSetFormatter.out(System.out, results, query) ;

所以现在你在迭代器的末尾和第二次调用:

ResultSetFormatter.out((OutputStream)go ,results, query);

从该点(结束)迭代,因此没有行。

尝试ResultSetFactory.copyResults获得一个可以倒带的结果集(或者只是不打印出来)。

于 2013-03-09T18:23:33.673 回答
0

这不是你应该这样做的。
我建议您创建一个包装 ByteArrayOutputStream 的 PrintStream,方法如下:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(baos);

然后将打印流传递给“out”的调用:

ResultSetFormatter.out(ps, results, query) ;

然后尝试从字节数组输出流创建一个字符串:

String s = new String(baos.toByteArray(), "UTF-8");

并执行

System.out.println(s);
于 2013-03-09T16:38:10.277 回答