Virtuoso SPARQL Query EditorでのTransaction timed out

By | 2013年11月2日

日本語DBpediaのSPARQLエンドポイントで下の様なクエリを実行する

select distinct * where {?s rdfs:label ?o filter regex(?o, "東京", "i") }

少々時間はかかるが結果は表示される。

しかしヤフカテLODのSPARQLエンドポイントでは同様のクエリで結果はTransaction timed outになる。

この違いは何なのだろうか。

ためしにLimitを100にしてみると、結果は普通に表示された。

ここでやっと気づく。

ヤフカテLODではlabelにアンダースコアで上位カテゴリをくっつけている(同名カテゴリとの区別のため)ため、東京という文字列が含まれる結果を返そうとすると、東京都カテゴリ以下全てのカテゴリ+東京という文字列が含まれるサイトを返してしまう。

すなわち膨大な数の結果を返すことになるのでTransaction timed outが発生してしまうのではないか。と思ったんだけど、本家DBpediaでも日本語DBpediaでも、それなりに結果数が多くなりそうなクエリをかけてみてもTransaction timed outにはならない。これはやはりVirtuosoの方で設定があるんだろうか?

とりあえず解決策としてLimitをつける。また、ヤフカテLODの場合、カレントカテゴリの名前のみの値はrdfs:labelの代わりにdcterms:titleを使っているのでそちらに置き換える。

そんなわけでTransaction timed outにならない方法知ってる方いたら教えてください。

コメントを残す

メールアドレスが公開されることはありません。