我使用的是jena API,我正在运行一个SELECT查询,如下所示-
SELECT ?stream ?numberOfStudents
where {
?stream inst:hasNumber ?numberOfStudents
}
这将返回一个ResultSet,其中一列为"stream",另一列为为"numberOfStudents"。现在我正试图使用以下代码将其转换为地图-
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方法。有什么方法可以实现我从结果集中获取地图的目标吗。如果这看起来完全错误,有人能给我一个更好的方法来实现从结果集获得地图的目标吗。
在您的情况下,这是将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;
}