优化SPARQL查询性能问题

问题描述

我正在寻找优化以下查询方法,目前该查询大约需要1m 20sec的时间,大约有213500个三元组。我正在寻找查询的任何优化建议

我知道Optional在这里花费了大部分时间,但是还有其他选择来获得相似的结果集吗?

我还在图片中附加了我们的资源映射

Here is design for our reources

CONSTRUCT
{
  ?cref ?p  ?o .
  ?o    ?p1 ?o1 .
  ?o    ?p2 ?o2 .
  ?o2   ?p3 ?o3 .
}
WHERE
  {
    {
      SELECT disTINCT ?cref
      WHERE {
              { ?cref xyz:hasSourceBrand xyz:abc .}
              union
              { ?cref xyz:hasTargetBrand xyz:abc .}
              VALUES ?o1 { "New" "Validated" } 
              ?cref xyz:CrossReferenceStatus ?o1 .
            }
    }
    ?cref ?p ?o .
    {
      ?cref ?p ?o .
    }
    UNION
    {
      ?o a xyz:Part .
      OPTIONAL { ?o ?p1 ?o1 .}
    }
    UNION
    {
      ?o a xyz:CrossReferenceRelation .
      OPTIONAL { ?o  ?p2 ?o2 .}
      OPTIONAL { ?o2 a   xyz:author ; 
                     ?p3 ?o3 .
               }
    }
  }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...