Привет, друзья. Я новый в семантической сети и испытываю некоторые трудности. Я задал вопрос DBPedia и получил пары свойств/стоимости для Парижа. Я хочу сделать, чтобы написать результаты запроса в файл rdf. Ниже приведен мой код:Написание результатов DBPedia SPARQL в файл RDF в java
import java.io.BufferedWriter;
import java.io.FileWriter;
import org.apache.jena.query.ParameterizedSparqlString;
import org.apache.jena.query.QueryExecution;
import org.apache.jena.query.QueryExecutionFactory;
import org.apache.jena.query.ResultSetFactory;
import org.apache.jena.query.ResultSetFormatter;
import org.apache.jena.query.ResultSetRewindable;
public class ParisTest {
public static void main(String[] args) {
ParameterizedSparqlString qs = new ParameterizedSparqlString(""
+ " SElECT ?property ?value where {{ <http://dbpedia.org/resource/Paris> ?property ?value } UNION "
+ " {?property ?value <http://dbpedia.org/resource/Paris>}}");
QueryExecution exec = QueryExecutionFactory.sparqlService("http://dbpedia.org/sparql", qs.asQuery());
ResultSetRewindable result = ResultSetFactory.makeRewindable(exec.execSelect());
try (BufferedWriter bw = new BufferedWriter(new FileWriter("QueryResults.rdf"))) {
while (result.hasNext()) {
System.out.println((result.next().get("property").toString()));
System.out.println((result.next().get("value").toString()));
System.out.println(ResultSetFormatter.asText(result));
bw.write((result.next().get("property").toString()));
bw.write((result.next().get("value").toString()));
}
bw.flush();
bw.close();
} catch (Exception e) {
}
}
}
Он отлично печатает результаты в консоли, но не записывает его в файл. Также я понимаю, что BufferedWriter & FileWriter создаст файл .rdf? Если возможно, не могли бы вы мне помочь в этом вопросе, пожалуйста?
Если вы хотите файл RDF, содержащий только те тройки, которые вы нашли в в запросе вы можете использовать ** конструкцию ** запроса. Это создаст ** Модель **, а затем вы можете просто написать модель на диск. –
Непонятно, почему вы хотите печатать весь результат каждый раз в цикле. Даже если он не опустит результат после одной казни, совершенно очевидно, что это будет многословным и бесполезным. Правильный ответ дается ниже @Steve McKay – AKSW