2011-12-18 15 views
3

HIでクエリを実行するときに、昨日それまでは仕事をしていたクエリがあります:タイムアウトトランザクションDBpediaの

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
    PREFIX foaf: <http://xmlns.com/foaf/0.1/> 
    SELECT DISTINCT(?film_link) ?film_abstract ?film_name ?wikipage 
    WHERE { 
    ?film_link rdf:type <http://dbpedia.org/ontology/Film> . 
    ?film_link rdfs:comment ?film_abstract 
    FILTER (langMatches(lang(?film_abstract), "EN")) . 
    ?film_link foaf:name ?film_name . 
    ?film_title foaf:page ?wikipage . 

    } 

が、今日表示されます。ヴィルトゥオーゾ42000エラー推定実行時間99232592(秒)の上限を超えて1500(秒)。 私もこのエラーを以前に見ましたが、しばらくしてからこのようなクエリを実行したときに実行されます。 誰もエラーの意味を説明できますか?

+0

あなたの質問に対する答えはどうして納得できませんか?この問題は、人々にあなたを助けることを躊躇します。... – glglgl

答えて

3

これは、Virtuosoのクエリプランナ(VirtuosoはDBPediaが実行するトリプルストアです)がクエリを評価するのにかかる時間を予測しており、クエリの実行を拒否するのに時間がかかると考えています。

が、私は問題は、クエリの最後のトリプル・パターンである疑いがある:クロス製品が持つあらゆる可能なトリプル

?film_title foaf:page ?wikipage 

あなたはあなたがするのVirtuosoを求めてきましたので、どのようなそのポイントの前にこれらの変数のいずれかを使用することはありません述語の位置にfoaf:pageがあり、残りのクエリで結果が返されます。あなたはそれが正常に動作する必要があり、以下にこれを変更した場合

?film_link foaf:page ?wikipage 

私は、これはあなたがとにかく書くためにどのような意味であり、あなたのクエリはかなり広く、ので、それはまだかなり遅いですが、これがために働く疑いFILTER節は評価が非常に遅いことがよくあります。

+0

この問題を解決するために、上記のクエリを2つのクエリに分割して使用しました。 PREFIXのRDFS: DISTINCT SELECT film_abstract WHERE { film_linkのRDF(film_link?):??タイプ<ます。http:// DBpediaの。組織/オントロジー/映画>。 ?film_link rdfs:comment?film_abstract FILTER(langMatches(lang(?film_abstract)、 "EN")) }同じ問題が発生しています。フィルタを削除すると解決します。私は英語が必要なので、Thsiフィルターは重要です何かがこの点で私を助けることができますか? –

+0

「フィルタリング」の代替手段はありますか? –

+0

「FILTER」は、言語をフィルタリングする唯一の方法ではありません。 DBPediaがクエリを拒否している場合は、データベースダンプからDBPediaのローカルコピーを作成することを検討したいかもしれません。 – RobV