我需要你的帮助,我想从dbpedia获得一个RDF图形图形,它以特定资源开始,包含该对象的对象和对象等 我的代码如下,它非常适合
package Sparql;
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.rdf.model.Model;
/**
*
* @author Nada
*/
public class Sparql
{
public Sparql()
{
}
public static String querySparql()
{
String query=
"PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>"+
"PREFIX dbpprop: <http://dbpedia.org/property/>"+
"PREFIX owl: <http://www.w3.org/2002/07/owl#>"+
"PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>"+
"prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n" +
"PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>"+
"PREFIX foaf: <http://xmlns.com/foaf/0.1/>"+
"PREFIX dc: <http://purl.org/dc/elements/1.1/>"+
"PREFIX : <http://dbpedia.org/resource/>"+
"PREFIX dbpedia2: <http://dbpedia.org/property/>"+
"PREFIX dbpedia: <http://dbpedia.org/>"+
"PREFIX skos: <http://www.w3.org/2004/02/skos/core#>";
query+= "CONSTRUCT {"+
"?s ?p ?o }"+
"WHERE {"+
" \"http://dbpedia.org/resource/FIFA\" ?p ?o . ?o ?pp ?oo"+
"}"
;
return query;
}
public Model executeSparqlQuery()
{
Query query = QueryFactory.create(querySparql());
QueryExecution exec = QueryExecutionFactory.sparqlService( "http: //dbpedia.org/sparql", query );
Model model = exec.execConstruct();
return model;
}
}
答案 0 :(得分:1)
我认为这可能是最近回答的类似问题的重复,我无法找到。
实现此目的的许多方法,但保持与查询类似 -
CONSTRUCT {
?s ?p ?o .
?o ?pp ?oo .
}
WHERE {
?s ?p ?o .
?o ?pp ?oo .
FILTER ( ?s = <http://dbpedia.org/resource/FIFA> )
}
我在您的查询中可以看到的主要问题是您已经制作了&#39; http://dbpedia.org/resource/FIFA&#39;文字不是URI。
您还在?o ?pp ?oo .
子句中指定了WHERE
,但未在CONSTRUCT
中指定。我已将?o ?pp ?oo .
添加到CONSTRUCT
子句中。