我有一个简单的SPARQL查询,该查询使用Filter
和Union
参数在图中查找共享节点。该查询需要很长时间才能编译。我希望看看是否有可能在结构上重新排列以提高其性能。
共享节点是以下三种的任何一种
我在要求的another question中提供了可能数据的图表。
查询如下:
"""SELECT DISTINCT ?b
WHERE{
{
?b ?p1 ?a.
?b ?p2 ?c.
filter(?a != ?c).
}
UNION
{
?a ?p1 ?b.
?c ?p2 ?b.
filter(?a != ?c).
}
UNION
{
?a ?p1 ?b.
?b ?p2 ?c.
filter(?a != ?c).
}}
"""
自从我发布此文章以来,我进行了一些实验,并了解到最耗时的部分是中间部分。
{
?a ?p1 ?b.
?c ?p2 ?b.
filter(?a != ?c).
}