您好我刚开始使用Jena并希望运行一些SPARQL查询。当我尝试运行基本选择查询时出现以下异常:
Caused by: java.lang.NoSuchMethodError: com.hp.hpl.jena.rdf.model.impl.RDFWriterFImpl.setBaseWriterClassName(Ljava/lang/String;Ljava/>lang/String;)Ljava/lang/String;
at org.openjena.riot.SysRIOT.wireIntoJena(SysRIOT.java:93)
at org.openjena.riot.RIOT.init(RIOT.java:61)
at com.hp.hpl.jena.query.ARQ.init(ARQ.java:451)
at com.hp.hpl.jena.query.ARQ.<clinit>(ARQ.java:456)
at com.hp.hpl.jena.query.Query.<clinit>(Query.java:62)
at com.hp.hpl.jena.query.QueryFactory.create(QueryFactory.java:80)
at com.hp.hpl.jena.query.QueryFactory.create(QueryFactory.java:52)
at com.qmap.core.server.jena.GetExistingRelationships.appendValidProperties(GetExistingRelationships.java:153)
我的java代码是:
String queryString = "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX ns: <http://www.semanticweb.org/ontologies/2012/1/Ontology1328444427428.owl#> SELECT ?r WHERE { ns:within rdfs:range ?r . }";
Query query = QueryFactory.create(queryString, Syntax.syntaxSPARQL);
QueryExecution qexec = QueryExecutionFactory.create(query, m) ;
try {
Iterator<QuerySolution> rs = qexec.execSelect() ;
for ( ; rs.hasNext() ; )
{
QuerySolution soln = rs.next() ;
System.out.println(soln.toString());
}
} finally { qexec.close() ; }
其中'm'是OntModel类型。从我一直在阅读的问题可能在于我的耶拿图书馆 - 但是我更新到最近的耶拿版本,但仍然没有运气。可能缺少某些东西,但是堆栈跟踪中引用的包就在那里。
以下是我的jena库文件:
非常感谢任何帮助。
答案 0 :(得分:4)
您的代码适合我。看起来jena-core不在运行时类路径上。
可能是因为你的类路径上还有其他内容 - 行号与ARQ 2.9.4不完全对应。