巨大な RDF グラフがあり、次のことをしたいとします。
select ?n ?o
where {
?n <name_of_a_node> <name_of_this_node>.
?n ?p ?o.
?o <type_of_a_node> ?t.
FILTER(REGEX(STR(?t), "president")).
}
上記のクエリは、ノード n の名前を知っていることを示しています。したがって、ノード n の URI を取得しています。次に、ノード n のすべての述語と、この述語を介して接続されている他のノードを取得しています。ノード a に接続されているこれらのノード o ごとに、それらのプロパティ (タイプ プロパティ) を調べて、タイプ プロパティに部分文字列を持つノード o のみを取得します。
これは SPARQL で可能ですか? 基本的には、ノードに立って、このノードが接続されている他のすべてのノードを調べ、プロパティの別の条件に一致するノードのみを取得します。
それ以外の場合、ノード n が接続されているすべてのノードを取得し、それぞれに対して別の SPARQL クエリを実行してこのチェックを行う必要がありますか?
JENAを使用してデータを保存しています。