私はノードのリストを持っており、それらのノード間のすべての関係を含むトリプルを取得したいと思います。'values'ブロック内に多数の値を持つSPARQLクエリ
これは私がこれまで何をやったかである:私は私が欲しいものを得る。これにより
PREFIX myPrefix: <http://example.org/myPrefix/>
SELECT ?a ?relation ?b
WHERE{
values ?a { myPrefix:id_00083184 myPrefix:id_00083187
myPrefix:id_00083189 myPrefix:id_00083182
myPrefix:id_09463313 myPrefix:id_00000790
myPrefix:id_00073965 myPrefix:id_00073966
myPrefix:id_00016990 myPrefix:id_08380001
myPrefix:id_00019131 myPrefix:id_03739215
myPrefix:id_00019129 myPrefix:id_00034482
myPrefix:id_00098617
}
values ?b { myPrefix:id_00083184 myPrefix:id_00083187
myPrefix:id_00083189 myPrefix:id_00083182
myPrefix:id_09463313 myPrefix:id_00000790
myPrefix:id_00073965 myPrefix:id_00073966
myPrefix:id_00016990 myPrefix:id_08380001
myPrefix:id_00019131 myPrefix:id_03739215
myPrefix:id_00019129 myPrefix:id_00034482
myPrefix:id_00098617
}
?a ?relation ?b .
}
を、それが、私の(外部)リスト上のノード間のすべての関係です。 values
を使用し、?a
と?b
のノードを繰り返します。しかし、問題は、私のノードリストが非常に大きくなる可能性があります。時には1000ノードまで持つことができますが、これはほんの小規模なケースです。そのクエリは実行に時間がかかりすぎます。
私は必要なことをするための良い方法がありますか?これが私が見つけた唯一のアプローチですが、私はSPARQLに慣れていないので、正しく実行する方法はありますか?
PS:ノードリストを別のデータベースのクエリから外部に取得し、Javaを使用して、リスト上のすべてのノードを追加するクエリを作成します。
これは私にとっては非常に洞窟のようですが、私が言ったように、私はSPARQLを使い始めています。
ありがとうございます。
非常に単純なクエリであるため、クエリのパフォーマンスを改善できると思いました。 'n '個のノードを持っているなら、単純な解決法の複雑さは明らかに' O(n²) ' – AKSW
私はあなたのクエリのパフォーマンスをどう改善できると思いますか?私は、それは私の質問のようなものです。@AKSW – antorqs
申し訳ありませんが、私は "私はそうは思わない"という意味でした。もちろん、関係が対称であれば、 'a r b'と' b r a'の両方をチェックしないようにすることもできますが、これは実際にクエリを作成する際の作業です。 – AKSW