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

3

我正在尝试将一个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个回答

3
问题在于您的打印调试实际上会消耗所有的结果,使得 ResultSet 在结尾处。当您尝试将其输出为 RDF/XML 时,已经没有更多的结果可用。
您可以通过将 ResultSet 变为可重复使用来解决这个问题。具体方法请参考此链接
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);

谢谢,我刚刚删除了调试打印……现在它可以工作了。 - rok

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接