首页 文章

在联合查询上构建 RDF 图?

提问于
浏览
0

我是 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 上测试它。

1 回答

  • 1

    在 SPARQL 中,SELECT查询将为您提供一个形式化为表的答案。

    要获得三元组,您需要使用CONSTRUCT查询,因此在它们上创建图形。

    通过CONSTRUCT查询的响应,您只需将 Statement 添加到 Graph 中。

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

相关问题