java - 查询挪威出生的人会导致未定义的命名空间前缀

标签 java sparql jena dbpedia

我正在尝试制作一个基本的 DBpedia 应用程序(仅用于测试)。当我使用此查询时:

SELECT ?person WHERE {
  ?person dbo:birthPlace:Norway ?person
}

我收到以下消息:

SPARQL compiler, line 6: Undefined namespace prefix at '' before '}'

有人可以告诉我我做错了什么吗?它适用于 DBpedia 查询测试器。

编辑:来自 Pastebin 的 Java 代码

package jena_test;

import java.io.Writer;
import java.sql.ResultSet;

import com.hp.hpl.jena.query.Query;
import com.hp.hpl.jena.query.QueryExecution;
import com.hp.hpl.jena.query.QueryExecutionFactory;
import com.hp.hpl.jena.query.QueryFactory;
import com.hp.hpl.jena.query.QuerySolution;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;

public class Dbpedia {

    String test = "123"; 
    static String sparqlQueryString="PREFIX dbo:<http://dbpedia.org/ontology/> "
            + "SELECT ?person "
            + "WHERE { ?person dbo:birthPlace dbo:Norway } ";
    public static void main(String[] args) {
        // TODO Auto-generated method stub





        Model model = ModelFactory.createDefaultModel();
                         Query query = QueryFactory.create(sparqlQueryString);

                         QueryExecution qexec = QueryExecutionFactory.sparqlService("http://dbpedia.org/sparql", sparqlQueryString);


                         try {
                             com.hp.hpl.jena.query.ResultSet results = qexec.execSelect();
                             for ( ; results.hasNext() ; )
                         {
                             QuerySolution soln = results.nextSolution() ;
                             String x = soln.get("Concept").toString();

                             System.out.print(x +"\n");


                         }

                         }

                         finally { qexec.close() ; }

                         }

    }

最佳答案

我无法让你的示例在 dbpedia 上运行,并假设你打算在某处定义 dbo 命名空间,因为它提示不知道 dbo 是什么。

例如

PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbpedia: <http://dbpedia.org/resource/>
SELECT ?person WHERE { ?person dbo:birthPlace dbpedia:Norway }

这有效。但它会返回你想要的吗?

关于java - 查询挪威出生的人会导致未定义的命名空间前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18428851/

相关文章:

sparql - dotNetRDF VS Jena.NEt VS 其他使用 Dotnet 的人?

java - 耶拿;如何在不迭代A父类(super class)或B子类的情况下检查A subClassOf B

java - Google Maps V2 - Android - 获取当前缩放级别

java - Java中整数数组的置换算法

sparql - 找出缺失的属性资源

sparql - 汇总SPARQL查询的结果

java - RXTX getPortIdentifiers() 卡住了

java - Android: Unresolved 依赖关系

datetime - 按 SPARQL 中的日期范围过滤

jena - org.apache.jena.shared.NoReaderForLangException : Reader not found: NT