Построить граф RDF по федеративному запросу? - PullRequest
0 голосов
/ 29 мая 2018

Я новичок в SPARQL и RDF.По сути, мне нужно спроектировать федеративный запрос SPARQL 1.1 через Wikidata и 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 Jena.

1 Ответ

0 голосов
/ 29 мая 2018

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