SPARQL:从可能的关系列表中找到连接两个实体的关系

问题描述

我有两组实体entities1entities2,我想从一组特定的关系中识别将两者联系在一起的所有关系。

这可以通过将关系声明为变量来完成:

?entities1 ?relations ?entities2

但是,这会遍历所有可能的关系,因此使查询变得异常缓慢和低效。

这也可以通过使用OR运算符声明所需的关系来完成:

?entities1 (relation1 | relation2 | ... | relation_n) ?entities2

查找所有其中实体1和2通过我们的一种关系链接但没有返回该关系的情况,因此不知道哪个关系正确。

我需要一种从一组指定的关系中查找每个实体之间的关系的方法,然后可以将这些表作为带有标题(entity1,entity2,relation)的表返回。

有什么想法吗?

解决方法

@UninformedUser友善指出,可以使用VALUES声明一组关系,这意味着可以达到以下预期效果:

VALUES ?relation {:relation1 :relation2 ... :relation_n} ?entities1 ?relation ?entities2 .

感谢您的帮助!