код, который я написал для выполнения sparql правильно? - PullRequest
1 голос
/ 11 марта 2011

мой код:

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)

*

Ответы [ 2 ]

2 голосов
/ 14 марта 2011

Ваш код выглядит нормально, ошибка, которую вы получаете, происходит из одной из библиотек, которые использует Jena. Какую версию Йены вы используете? Вы пробовали с последней версией? Вы гарантировали, что все .jar в каталоге lib/ вашей загрузки Jena находятся на вашем CLASSPATH? Если да, проверили ли вы, чтобы на вашем CLASSPATH не было нескольких конфликтующих версий Jena (или slf4j-*.jar)?

1 голос
/ 16 марта 2011

SPARQL-запрос неверен, вы должны использовать '{' вместо '(' и без запятых:

    String queryString = "SELECT ?x WHERE { ?x <http://www.w3.org/2001/vcard-rdf/3.0#FN> \"John Smith\"}";
...