2

こんにちは私は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ライブラリにあります-しかし、私は最新のJenaビルドに更新しましたが、それでも運がありません。何かが足りない可能性がありますが、スタックトレースで参照されているパッケージがあります。

これが私のイエナライブラリファイルです:

JENAライブラリファイル

どんな助けでも大歓迎です。

4

1 に答える 1

4

あなたのコードは私のために働きます。jena-coreがランタイムクラスパスにないようです。

クラスパスに他のものがあることが原因である可能性があります-行番号がARQ2.9.4と完全に一致していません。

于 2012-10-24T21:37:38.897 に答える