2010-06-04 8 views
4

CONSTRUCT est une clause de résultat SPARQL alternative à SELECT. Au lieu de renvoyer une table de valeurs de résultat, CONSTRUCT renvoie un graphique RDF. Par exemple, l'exécution de cette requête dans le code Java suivant produit un HttpException: 406 Unacceptable. Mais si au lieu du bloc CONSTRUCT, je choisis SELECT ?x, c'est très bien. Est-ce que Jena supporte CONSTRUCT, et si oui, comment? Les deux requêtes sont acceptées par le DBpedia endpoint.Jena Sparql et construct

PREFIX : <http://dbpedia.org/resource/> 
PREFIX onto: <http://dbpedia.org/ontology/> 

CONSTRUCT { 
    :France onto:anthem ?x 
} 

WHERE 
{ 
    :France onto:anthem ?x . 
} 
Query query = QueryFactory.create("the query goes here"); 
QueryExecution qexec = QueryExecutionFactory.sparqlService("http://dbpedia.org/sparql",  query); 
ResultSet results = qexec.execSelect(); 
ResultSetFormatter.out(System.out, results, query); 

Répondre

11

Jena soutient CONSTRUCT, mais pour obtenir le résultat que vous avez besoin d'appeler une autre méthode, parce que execSelect et ResultSet ne sont que pour SELECT requêtes. Utilisez ceci:

Model results = qexec.execConstruct(); 
results.write(System.out, "TURTLE"); 

Model est l'interface de Jena pour accéder à des graphes RDF, consultez la javadocs pour plus de détails.

+0

a parfaitement fonctionné, la méthode d'écriture fait tout le travail pour moi, thx – blueomega

2

ResultSetFormatter.out (System.out, résultats, recherche) ne peut pas trouver le symbole et l'identificateur d'erreur se produit attendu à ce stade