【问题标题】:NoSuchMethod when trying to create a SPARQL query with jena尝试使用 jena 创建 SPARQL 查询时的 NoSuchMethod
【发布时间】:2012-03-28 14:06:58
【问题描述】:

我正在尝试使用 ARQ 示例中的 vc-db-1.rdf 和 q1.rq 进行一些 SPARQL 查询。这是我的 java 代码:

import com.hp.hpl.jena.rdf.model.*;
import com.hp.hpl.jena.util.FileManager;
import com.hp.hpl.jena.query.* ;
import com.hp.hpl.jena.query.ARQ;
import com.hp.hpl.jena.iri.*;
import java.io.*;
public class querier extends Object 
{
static final String inputFileName = "vc-db-1.rdf";
public static void main (String args[]) 
{
    // Create an empty in-memory model 
    Model model = ModelFactory.createDefaultModel();
    // use the FileManager to open the bloggers RDF graph from the filesystem
    InputStream in = FileManager.get().open(inputFileName);
    if (in == null) 
    {
        throw new IllegalArgumentException( "File: " + inputFileName + " not found");
    }
    // read the RDF/XML file
    model.read( in, ""); 
    // Create a new query
    String queryString = "PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> SELECT ?y ?givenName WHERE { ?y vcard:Family \"Smith\" . ?y vcard:Given  ?givenName . }";
    QueryFactory.create(queryString);
}
}

编译通过就好了。 问题是查询甚至没有执行,但我在行创建它时遇到错误

QueryFactory.create(queryString);

有以下解释:

C:\Wallet\projects\java\ARQ_queries>java querier
Exception in thread "main" java.lang.NoSuchMethodError: com.hp.hpl.jena.iri.IRI.
resolve(Ljava/lang/String;)Lcom/hp/hpl/jena/iri/IRI;
    at com.hp.hpl.jena.n3.IRIResolver.resolveGlobal(IRIResolver.java:191)
    at com.hp.hpl.jena.sparql.mgt.SystemInfo.createIRI(SystemInfo.java:31)
    at com.hp.hpl.jena.sparql.mgt.SystemInfo.<init>(SystemInfo.java:23)
    at com.hp.hpl.jena.query.ARQ.init(ARQ.java:373)
    at com.hp.hpl.jena.query.ARQ.<clinit>(ARQ.java:385)
    at com.hp.hpl.jena.query.Query.<clinit>(Query.java:53)
    at com.hp.hpl.jena.query.QueryFactory.create(QueryFactory.java:68)
    at com.hp.hpl.jena.query.QueryFactory.create(QueryFactory.java:40)
    at com.hp.hpl.jena.query.QueryFactory.create(QueryFactory.java:28)
    at querier.main(querier.java:24)

我该如何解决这个问题?谢谢。

【问题讨论】:

    标签: java sparql jena arq


    【解决方案1】:

    您似乎在类路径上缺少 IRI 库(IRI 库与主 Jena JAR 是分开的)。 Jena 对其他几个库具有运行时依赖项,这些库包含在 Jena 发行版的 lib 目录中。所有这些都需要在运行时(但不一定在编译时)位于您的类路径中。

    【讨论】:

    • 该死,我再次检查了它(已经 3 次之后),发现我在类路径中写“iri.jar”时出错(写为“jri.jar”) .谢谢!
    • 假设 Java 6 或更高版本,类路径中的通配符是受支持的,所以你可以说类似“-cp lib/*”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多