2017-01-10 5 views
0

Apache Jenaを使用して、Dbpediaから大量のデータを取得し、CSVファイルに書き込みます。しかし、私はデータ全体ではなく約10,000個のトリプルしか得ることができません。クエリですべてのトリプルを取得する必要があります。私はそれがエンドポイントタイムアウトかどうかを特定することはできません。私が書いたコードは、次のとおりです。Apache Jenaを使用してDbpediaエンドポイントを照会するときにタイムアウトを防止します

public class FetchCountriesData { 

    public void getCountriesInformation() throws FileNotFoundException { 
     ParameterizedSparqlString qs = new ParameterizedSparqlString("PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> \n " 
       + "SELECT * {  ?Subject rdf:type <http://dbpedia.org/ontology/Country> .  ?Subject ?Predicate ?Object } ORDER BY ?Subject "); 

     QueryExecution exec = QueryExecutionFactory.sparqlService("https://dbpedia.org/sparql", qs.asQuery()); 
     //exec.setTimeout(10000000); 
     exec.setTimeout(10, TimeUnit.MINUTES); 
     ResultSet results = exec.execSelect(); 
     ResultSetFormatter.outputAsCSV(new FileOutputStream(new File("C:/fakepath/CountryData.csv")), results); 
     ResultSetFormatter.out(results); 
    } 
} 
+2

ここでは何度か答えます。 DBpediaは公共サービスであり、結果セットのサイズは10000に制限されています。これは、すべてのユーザー間の公平性を確保するためです。あなたは 'ORDER BY?Subject LIMIT 10000 + OFFSET n'を使い、ある種のページネーション(' n'は10000の倍数)を行うことができます。より良い方法は、データを手動でロードし、独自のトリプルストアrespで処理することです。リソース。 – AKSW

+1

または自分の[雲のDBpediaミラー](http://virtuoso.openlinksw.com/dataspace/doc/dav/wiki/Main/VirtPayAsYouGoEBSBackedAMIDBpedia2015)を実行してください。 – TallTed

答えて

関連する問題