java - 如何将从 Sparql SELECT 查询获得的结果集转换为映射

标签 java sparql resultset jena

我正在使用 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/

相关文章:

java - 向前跳到特定的 JDBC 记录号

Java Android Studio SQL ResultSet 由应用程序执行时出现 NullPointerException

ruby-on-rails - SPARQL、RDF 和处理数据

python - 使用 DBPedia 的示例 python 脚本?

java - Java从数据库中读取特定数据字段

java - 在 Android 中存储位图

java - 想要从 java 运行 C 程序可执行文件

java - 如何在 JLabel 上显示多个图像

java - 在 JApplet 中添加图像

relationship - SPARQL 可以描述一个不存在某种关系的对象吗?