Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 访问查询结果时发生意外的NullPointerException_Java_Nullpointerexception_Sparql_Jena_Dbpedia - Fatal编程技术网

Java 访问查询结果时发生意外的NullPointerException

Java 访问查询结果时发生意外的NullPointerException,java,nullpointerexception,sparql,jena,dbpedia,Java,Nullpointerexception,Sparql,Jena,Dbpedia,我有这段代码,但我不明白为什么会出现NullPointerException: public static ArrayList<String> retrieveObject(String istance,String property){ String sparqlQueryString= "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf- syntax-ns#> "+ "PREFIX rdfs: &

我有这段代码,但我不明白为什么会出现NullPointerException:

public static ArrayList<String> retrieveObject(String istance,String property){
    String sparqlQueryString= "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-   syntax-ns#> "+
        "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> "+
        "PREFIX dbpedia: <http://dbpedia.org/resource/> "+
        "PREFIX o: <http://dbpedia.org/ontology/> "+
        "PREFIX dbprop: <http://dbpedia.org/property/>"+
        "PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>" +
        "select ?c"+
        "where {<"+istance+"> "+property+" ?c.}";
    ArrayList<String> array = new ArrayList<String>();
    Query query = QueryFactory.create(sparqlQueryString);
    QueryExecution qexec = QueryExecutionFactory.sparqlService("http://dbpedia.org/sparql", query);
    ResultSet res = qexec.execSelect();
    for(; res.hasNext();) {
        QuerySolution soln = res.nextSolution();
        for(int i=0;i<query.getProjectVars().size();i++){
            array.add(soln.get(query.getProjectVars().get(i).getVarName()).asResource().toString());   
        }

    }
    return array;
} 

我在这一行有空指针异常: add(soln.get(query.getProjectVars().get(i).getVarName()).asResource().toSt‌​环())

将表达式拆分以找到NPE-一种可能性是它不是URI,因此
asResource
是错误的

也许更好

   for(String var : query.getResultVars() {
        Resource r = soln.getResource(var) ;
        array.add(r.getURI()) ;
   }

(注意空白节点)

我们需要堆栈跟踪。我在这一行有空指针异常:array.add(soln.get(query.getProjectVars().get(I.getVarName()).asResource().toString())@用户2837896我看到你发表了一条评论:“我解决了。在?c之后缺少一个空格。”第一:如果你找到了一个解决方案,你应该把它作为答案发布并接受它。第二:我以前在堆栈溢出上看到过这个问题,所以这是一个重复的问题(我现在正在寻找)。请,哦,请阅读,有人能帮我吗?我解决了…之后缺少一个空格?c@user2837896这个问题以前见过,所以我投票决定以重复的方式结束。
   for(String var : query.getResultVars() {
        Resource r = soln.getResource(var) ;
        array.add(r.getURI()) ;
   }