是我为sparql执行写的代码是否正确?
问题描述:
我的代码:如何产生是我为sparql执行写的代码是否正确?
package sample;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import com.hp.hpl.jena.query.Query;
import com.hp.hpl.jena.query.QueryExecution;
import com.hp.hpl.jena.query.QueryExecutionFactory;
import com.hp.hpl.jena.query.QueryFactory;
import com.hp.hpl.jena.query.ResultSet;
import com.hp.hpl.jena.query.ResultSetFormatter;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
public class QueryTest {
public static void main(String[] args) throws IOException {
InputStream in = new FileInputStream(new File("foaf-ijd.rdf"));
Model model = ModelFactory.createMemModelMaker().createDefaultModel();
model.read(in, null);
in.close();
String queryString = "SELECT ?x WHERE (?x, <http://www.w3.org/2001/vcard-rdf/3.0#FN>, 'John Smith')";
Query query = QueryFactory.create(queryString);
QueryExecution qe = QueryExecutionFactory.create(query, model);
ResultSet results = qe.execSelect();
ResultSetFormatter.out(System.out, results, query);
qe.close();
}
}
错误
Exception in thread "main" java.lang.NoSuchMethodError: org.slf4j.Logger.trace(Ljava/lang/String;)V
at com.hp.hpl.jena.sparql.lib.SystemUtils.chooseClassLoader(SystemUtils.java:23)
at com.hp.hpl.jena.sparql.lib.Metadata.init(Metadata.java:45)
at com.hp.hpl.jena.sparql.lib.Metadata.get(Metadata.java:75)
at com.hp.hpl.jena.query.ARQ.<clinit>(ARQ.java:253)
at com.hp.hpl.jena.query.Query.<clinit>(Query.java:54)
at com.hp.hpl.jena.query.QueryFactory.create(QueryFactory.java:71)
at com.hp.hpl.jena.query.QueryFactory.create(QueryFactory.java:43)
at com.hp.hpl.jena.query.QueryFactory.create(QueryFactory.java:31)
at sample.QueryTest.main(QueryTest.java:29)
*
答
你的代码看起来OK,你得到来自于耶拿使用的库中的一个错误。您使用哪个版本的耶拿?你有没有尝试过最新版本?您是否确保Jena下载的lib/
目录中的所有.jar
位于您的CLASSPATH上?如果是这样,是否检查过以确保您的CLASSPATH上没有多个冲突版本的Jena(或slf4j-*.jar
)?
答
SPARQL查询是不对的,你应该使用 '{',而不是 '(' 和没有逗号:
String queryString = "SELECT ?x WHERE { ?x <http://www.w3.org/2001/vcard-rdf/3.0#FN> \"John Smith\"}";