2011-11-24 106 views
2

我在使用Jena对dbpedia.org执行SPARQL查询时遇到问题。从Jena对DBpedia执行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的查询,但它们中的一些“挂起”约一分钟或两个:

查询是用下面的标准代码执行

com.hp.hpl.jena.sparql.resultset.ResultSetException: Not an ResultSet result 

如果我捕捉到了异常,并继续,一些查询挂起,一些返回结果与0或更多结果快速设置。这样做几次,它是随机的返回或“挂起”的查询。在相同的查询中使用SPARQL DBpedia有时会起作用,有时在Web浏览器中以相同的方式挂起。

  • 我构建查询错误,使它在某种程度上耗时dbpedia.org,以便在服务器查询超时?我是很新的语义Web和耶拿,但我想我最初不查询可能是非常耗时的,因为我在

    ?album p:artist <http://www.dbpedia.org/resource/SomeArtist> 
    

    语句中使用绝对URI为对象的一部分。

  • 是否存在一些来自dbiana.org的来自单源/每时间单元限制的请求,我不知道这些请求的数量?

(使用耶拿2.6.4)

回答

1

我可以证实,查询速度很慢。

我尝试了一些可能会影响速度的变化,但它没有帮助。我看不出任何明显的原因,为什么这种类型的查询会特别慢,对不起。

一种替代方法,以获得更多的一致的响应时间会下载DBpedia中转储,用grep出你感兴趣的谓词,并将其加载到本地triplestore,例如耶拿。

+0

感谢您的回复。我同意当地的转储对于一致的性能来说是最好的。我现在也尝试了新的SPARQL端点http://live.dbpedia.org/sparql,响应时间好得多(目前无论如何)。 – tle

+0

我有使用dotNetRDF相同的问题,关于如何将dbpedia下载到本地转储的任何想法? – SKandeel