我正在使用 jena API,并且正在运行一个 SELECT 查询,如下所示 -
SELECT ?stream ?numberOfStudents
where {
?stream inst:hasNumber ?numberOfStudents
}
这将返回一个结果集,其中一列是“stream”,另一列是“numberOfStudents”。现在我尝试使用以下代码将其转换为 map -
public static getResultAsMap(ResultSet rs){
Map<String, Integer> myMap = new HashMap<String, Integer>();
int column1Pos = rs.findColumn("stream");
int column2Pos = rs.findColumn("numberOfStudents");
while (rs.next()) {
String column1 = rs.getString(column1Pos);
int column2 = rs.getInt(column2Pos);
myMap.put(column1, column2);
}
但是出现错误,指出我无法使用 findColumn 方法。有什么方法可以实现我从结果集中获取 map 的目标吗?如果这看起来完全错误,有人可以建议我一种更好的方法来实现从结果集中获取 map 的目标。
最佳答案
这是在您的情况下将 sparql ResultSet 转换为 Map 的另一种方法。
1.包括以下导入:
import java.util.HashMap;
import java.util.Map;
import com.hp.hpl.jena.query.QuerySolution;
import com.hp.hpl.jena.query.ResultSet;
2.使用QuerySolution类进行转换:
public Map<String, Integer> getResultAsMap(ResultSet rs) {
Map<String, Integer> myMap = new HashMap<String, Integer>();
for (; rs.hasNext();) {
QuerySolution soln = rs.nextSolution();
String stream = soln.get("stream").toString();
String noOfStudentsStr = soln.get("numberOfStudents").toString();
int noOfStudents = Integer.parseInt(noOfStudentsStr);
myMap.put(stream, noOfStudents);
}
return myMap;
}
关于java - 如何将从 Sparql SELECT 查询获得的结果集转换为映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26062907/