3
ARQ 예제에서 vc-db-1.rdf 및 q1.rq를 사용하여 일부 SPARQL 쿼리를 작성하려고합니다. 여기 내 자바 코드는 다음과 같습니다
jena로 SPARQL 쿼리를 만들려고 할 때 NoSuchMethod
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)
가 어떻게이 문제를 해결할 수 있습니까? 고맙습니다.
젠장, 다시 한번 (이미 3 번) 다시 한번 확인해 본 결과 클래스 패스에 "iri.jar"를 쓰는 실수를 저지른 것을 발견했습니다 ("jri.jar"로 쓰여졌습니다). 고맙습니다! – twonegatives
Java 6 이상을 가정하면 클래스 경로의 와일드 카드가 지원되므로 "-cp lib/*"와 같이 말할 수 있습니다. – Alex