is the code that i have written for sparql execution correct?
m开发者_如何学运维y code:
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();
}
}
errors getting generated
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)
*
Your code looks OK, the error that you are getting comes from one of the libraries that Jena uses. Which version of Jena are you using? Have you tried with the latest release? Have you ensured that all of the .jar
s in the lib/
directory of your Jena download are on your CLASSPATH? If so, have you checked to ensure that you don't have multiple conflicting versions of Jena (or of slf4j-*.jar
) on your CLASSPATH?
The SPARQL query is wrong, you should use '{' instead of '(' and no commas:
String queryString = "SELECT ?x WHERE { ?x <http://www.w3.org/2001/vcard-rdf/3.0#FN> \"John Smith\"}";
精彩评论