Jena:如何从Java中的SPARQL(Jena)ResultSet获取Integer结果?

时间:2014-12-17 15:41:53

标签: java integer sparql resultset jena

我使用SPARQL查询查询整数结果:

String qString = 
            "SELECT (COUNT(?S) AS ?C) "+
            "WHERE "+
            "{ "+
            "?S <"+p1+"> ?O ."+
            "?S <"+p2+"> ?O ."+
            "} ";
    Query q = QueryFactory.create(PREFIX+qString);
    QueryExecution qExecution = QueryExecutionFactory.sparqlService(ENDPOINT, q);
    ResultSet qResults = qExecution.execSelect();
    if(qResults.hasNext()){
        QuerySolution thisRow = qResults.next();
        int C = thisRow.get("C").toString();
    }

问题是get()函数只返回使用toString()的字符串输出。我需要一个int输出。我该怎么做呢?

1 个答案:

答案 0 :(得分:5)

我找到了解决方案。使用文字如下:

String qString = 
            "SELECT (COUNT(?S) AS ?C) "+
            "WHERE "+
            "{ "+
            "?S <"+p1+"> ?O ."+
            "?S <"+p2+"> ?O ."+
            "} ";
    Query q = QueryFactory.create(PREFIX+qString);
    QueryExecution qExecution = QueryExecutionFactory.sparqlService(ENDPOINT, q);
    ResultSet qResults = qExecution.execSelect();
    if(qResults.hasNext()){
        QuerySolution thisRow = qResults.next();
        Literal C_12_literal = ((Literal) thisRow.get("C"));
        C_12 = C_12_literal.getInt();
    }

Literal允许您获取许多数据类型,如int,float等。