假设我们有一个巨大的 RDF 图并且想要执行以下操作:(我尝试了它但它不起作用 - 想知道我是否错误地构造了查询或 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 来存储数据。