java - 使用 jena fusioni 服务器查询 rdf 文件时出现异常

标签 java sparql rdf jena ontology

这是我的java代码,我正在尝试使用jena查询我的rdf文件,但它给了我关于文字的异常。我使用 protege 工具设计了 rdf 文件,并尝试使用 jena 查询它。

Exception in thread "main" java.lang.ClassCastException: com.hp.hpl.jena.rdf.model.impl.ResourceImpl cannot be cast to com.hp.hpl.jena.rdf.model.Literal
at com.hp.hpl.jena.sparql.core.QuerySolutionBase.getLiteral(QuerySolutionBase.java:26)
at emotion.sparqltest(emotion.java:36)
at emotion.main(emotion.java:16)

我的java代码如下...

import com.hp.hpl.jena.query.Query;
import com.hp.hpl.jena.query.QueryFactory;
import com.hp.hpl.jena.query.QueryExecution;
import com.hp.hpl.jena.query.QueryExecutionFactory;
import com.hp.hpl.jena.query.QuerySolution;
import com.hp.hpl.jena.query.ResultSet;
import com.hp.hpl.jena.rdf.model.Literal;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.util.FileManager;

public class emotion {
public static void main(String[] args) {
    // TODO Auto-generated method stub

sparqltest();}

static void sparqltest()
{

FileManager.get().addLocatorClassLoader(emotion.class.getClassLoader());
Model model= FileManager.get().loadModel("C:/Users/avg/workspacejena32/Jena/bin/emotion.rdf");

String queryString="PREFIX uni:<http://www.semanticweb.org/avg/ontologies/2016/2/untitled-ontology-5#>" +
               "SELECT * WHERE {" +
               "uni:angry uni:says ?x}";



Query query= QueryFactory.create(queryString);
QueryExecution qexec=QueryExecutionFactory.create(query, model);

try {
    ResultSet results = qexec.execSelect();while ( results.hasNext()){
    QuerySolution soln = results.nextSolution();
    Literal name = soln.getLiteral("x");
    System.out.println(name);
}
} 

finally {
qexec.close();
    }}}

如果我像这样对查询进行一些更改

"uni:angry uni:says ?words"

然后我得到如下空结果

null
null

最佳答案

Literal name = soln.getLiteral("x");

?x 不是文字 - 它是 URI 或空白节点。

当您使用 uni:angry uni:says ?words 时,未设置 ?x。

关于java - 使用 jena fusioni 服务器查询 rdf 文件时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36102810/

相关文章:

java - 如何将 facebook 登录与 Struts2 集成?

java - Hibernate 上的字符串枚举

SPARQL 查询返回的行数比预期多得多

asp.net - 语义 Web 本体工具和对 ASP.net 项目的支持

sparql wikidata 标识符引用

java - 通过java执行mp4box命令得到错误

java - WebService代理类

rdf - 使用OWL API查询BBC Wildlife Ontology

rdf - 如何获取 URI 的后缀(# 之后)?

php - 在 PHP 中使用 OWL 作为 mysql