Jena を使用して dbpedia.org に対して SPARQL クエリを実行できません。
クエリの形式は次のとおりです。
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX p: <http://dbpedia.org/property/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?album ?name ?dateofrelease
WHERE {
?album p:artist <http://dbpedia.org/resource/SomeArtist> .
?album rdf:type <http://dbpedia.org/ontology/Album> .
?album rdf:type <http://schema.org/MusicAlbum> .
?album p:name ?name .
?album <http://dbpedia.org/ontology/releaseDate> ?dateofrelease .
FILTER(xsd:dateTime(?dateofrelease) >= '2009-01-01T00:00:00Z'^^xsd:dateTime)
} LIMIT 5
ここで、http://www.dbpedia.org/resource/SomeArtistは有効なアーティスト URI (たとえばhttp://dbpedia.org/resource/Wilco ) であり、送信前に適切に URL エンコードされます。
クエリは、次の標準コードで実行されます。
Query query = QueryFactory.create(queryString);
QueryExecution qexec = QueryExecutionFactory.sparqlService("http://dbpedia.org/sparql", query);
ResultSet results = queryExecution.execSelect();
プログラムは同じフォームに対して約 30 のクエリを実行していますが、Jena がクエリをスローする前に、一部のクエリが約 1 ~ 2 分間「ハング」します。
com.hp.hpl.jena.sparql.resultset.ResultSetException: Not an ResultSet result
例外をキャッチして続行すると、一部のクエリがハングし、一部のクエリはすぐに結果セットを返し、0 個以上の結果が返されます。これを数回行うと、どのクエリが返されるか「ハング」するかはランダムになります。同一のクエリで SPARQL DBpedia を使用すると、Web ブラウザで同じようにハングアップすることがあります。
サーバーでクエリがタイムアウトするように、クエリを間違って構築しているので、dbpedia.org に何らかの方法で時間がかかりますか? 私はセマンティック Web と Jena にまったく慣れていませんが、最初は、オブジェクト部分に絶対 URI を使用しているため、クエリに非常に時間がかかると思っていました。
?album p:artist <http://www.dbpedia.org/resource/SomeArtist>
声明。
私が認識していない dbpedia.org への 1 つのソース/時間単位ごとの制限からのリクエストの数はありますか?
(Jena 2.6.4 を使用)