关于构建联合查询RDF图?(Construct RDF graph on federated que

2019-11-04 19:03发布

我是新来的SPARQL和RDF。 Bascially我要设计联合SPARQL 1.1查询在维基数据和DBpedia中。

这是我简单的查询。 这将选择电影的主演莱昂纳多迪卡普里奥。

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耶拿测试它。

Answer 1:

在SPARQL, SELECT查询会给你正式作为表的答案。

要获得三倍,你需要使用一个CONSTRUCT查询,因此在其上创建一个图表。

随着响应CONSTRUCT查询,你只需要声明添加到图表。

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())
}


文章来源: Construct RDF graph on federated query?