我是SPARQL和RDF的新手。基本上我必须在Wikidata和Dbpedia上设计联邦SPARQL 1.1查询。
这是我的简单查询。这将选择由莱昂纳多迪卡普里奥主演的电影。
PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbr: <http://dbpedia.org/resource/>
PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?film WHERE {
{
SELECT ?film WHERE {
?film wdt:P161 wd:Q38111.
}
}
UNION
{
SELECT ?film WHERE {
?film rdf:type dbo:Film .
?film dbo:starring dbr:Leonardo_DiCaprio .
}
}
}
我必须在那上构建一个图表。任何人都可以帮助我这种类型的查询? 我在Apache Jena上测试它。
答案 0 :(得分:1)
在SPARQL中,SELECT
查询将为您提供一个形式化为表格的答案。
要获得三元组,您需要使用CONSTRUCT
查询,然后在其上创建图表。
通过CONSTRUCT
查询的响应,您只需将Statement添加到图表中。
Graph graph = GraphFactory.createDefaultGraph(); // Create an empty graph
String queryString = "CONSTRUCT { ?s ?p ?o } WHERE ..."
// ... Depends on which way you want to query the dataset
QueryExecution qexec = QueryExecutionFactory.create(queryString, ...)
Iterator<Triple> triples = qexec.execConstructTriples();
while(triples.hasnext()){
graph.add(triples.next())
}