Я хотел бы запросить DBPedia с помощью Java. Ниже приведен мой код, и он не возвращает правильный результат. Я хочу получить абстрактную часть с [http://dbpedia.org/page/Ibuprofen и название ярлыка. но он возвращает только http://dbpedia.org/resource/Ibuprofen 11 раз. Если можно, подскажите, где ошибка? Это мой код:
import org.apache.jena.query.ParameterizedSparqlString;
import org.apache.jena.query.QueryExecution;
import org.apache.jena.query.QueryExecutionFactory;
import org.apache.jena.query.ResultSet;
import org.apache.jena.query.ResultSetFormatter;
import org.apache.jena.rdf.model.Literal;
import org.apache.jena.rdf.model.ResourceFactory;
public class JavaDBPediaExample {
public static void main(String[] args) {
ParameterizedSparqlString qs = new ParameterizedSparqlString(""
+ "prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n"
+ "PREFIX dbo: <http://dbpedia.org/ontology/>"
+ "\n"
+ "select ?resource where {\n"
+ " ?resource rdfs:label ?label.\n"
+ " ?resource dbo:abstract ?abstract.\n"
+ "}");
Literal ibuprofen = ResourceFactory.createLangLiteral("Ibuprofen", "en");
qs.setParam("label", ibuprofen);
QueryExecution exec = QueryExecutionFactory.sparqlService("http://dbpedia.org/sparql", qs.asQuery());
ResultSet results = exec.execSelect();
while (results.hasNext()) {
System.out.println(results.next().get("resource"));
}
ResultSetFormatter.out(results);
}
}
?abstract
в запросе. И вы должны вызватьget
для этой переменной, т.е.get("abstract")
или еще лучшеgetLiteral("abstract")
. Похоже, вы откуда-то скопировали код? Я спрашиваю, потому что мне было интересно, что вы сами не видите проблемы. - person UninformedUser   schedule 14.06.2016http://dbpedia.org/resource/Ibuprofen
с ресурсом, а не со страницей. В веб-браузере вы автоматически перенаправляетесь на версию страницы, но фактическим ресурсом является версия ресурса. - person Joshua Taylor   schedule 14.06.2016