将结果集转换为Jena中的RDF / XML

时间:2014-11-27 10:48:04

标签: java xml rdf jena

我尝试使用此代码转换XML / RDF格式的resultset

ResultSet result = rmParliament.selectQuery(select);
System.out.println(ResultSetFormatter.asText(result));
ResultSetFormatter.outputAsRDF(System.out, "RDF/XML", result);

代码的第二行是验证查询的正确行为(它有效!),但我在控制台中输入以下内容:

<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
    xmlns:rs="http://www.w3.org/2001/sw/DataAccess/tests/result-set#" > 
 <rdf:Description rdf:nodeID="A0">
    <rs:size rdf:datatype="http://www.w3.org/2001/XMLSchema#int">0</rs:size>
    <rs:resultVariable>value</rs:resultVariable>
    <rs:resultVariable>property</rs:resultVariable>
    <rs:resultVariable>name</rs:resultVariable>
    <rdf:type rdf:resource="http://www.w3.org/2001/sw/DataAccess/tests/result-set#ResultSet"/>
 </rdf:Description>
</rdf:RDF>

不包含我的数据,我的代码出了什么问题?

1 个答案:

答案 0 :(得分:3)

问题是您的打印调试实际上会消耗所有结果,最后会留下ResultSet。当您尝试将其输出为RDF / XML时,没有更多结果可用。

您可以通过制作ResultSet rewindable

来解决此问题
ResultSetRewindable result =
    ResultSetFactory.makeRewindable( rmParliament.selectQuery(select) );
System.out.println(ResultSetFormatter.asText(result));
result.reset(); // back to the start
ResultSetFormatter.outputAsRDF(System.out, "RDF/XML", result);