Algorithm SPARQL查询计算复杂性

Algorithm SPARQL查询计算复杂性,algorithm,complexity-theory,rdf,time-complexity,sparql,Algorithm,Complexity Theory,Rdf,Time Complexity,Sparql,我有一个SPARQL查询列表,其中包含各种模式,例如select、union、join。我想用大O表示法来计算它们的时间复杂度,例如On、Onlogn。请告诉我怎么做。我的RDF图中有超过30000000个三元组 下面是一些示例查询 Query 1: select ?o where { <http://example.com/person_info/242622027> vocab:info_gender ?o} Query 2: select ?o ?k where { {

我有一个SPARQL查询列表,其中包含各种模式,例如select、union、join。我想用大O表示法来计算它们的时间复杂度,例如On、Onlogn。请告诉我怎么做。我的RDF图中有超过30000000个三元组

下面是一些示例查询

Query 1:
select ?o  where { <http://example.com/person_info/242622027> vocab:info_gender ?o}

Query 2:
select ?o ?k where {
  {
    ?s vocab:person_info_pid  '242622027'^^xsd:decimal. 
    ?s vocab:person_info_homeloc ?o
  }
 UNION
  {
   ?i vocab:activities_pid '242622027'^^xsd:decimal. 
   ?i vocab:activities_purpose ?k                 
  }
 }

Query3: 
select (count(*) as ?no) where{
  ?s vocab:outputparttwo_iteration '0'^^xsd:decimal
  }

SPARQL本身就是。对于任何给定的查询,您可能只能得出最佳的案例复杂性。现实世界的复杂性在某种程度上取决于数据库的实现。

SPARQL本身就是如此。对于任何给定的查询,您可能只能得出最佳的案例复杂性。现实世界的复杂性在某种程度上取决于数据库的实现。

一个图中有300多亿个三元组?SPARQL只是一种查询语言;实现可以以多种不同的方式实现,因此对于给定查询的运行时复杂性没有通用的答案。这取决于实施情况。也就是说,大型三元组存储通常会索引数据,因此查询1和查询3将非常快。查询二可能是OO?s?o查询+o?i?k查询。是的,我有一个大的图。我可以理解SPARQL实现。假设没有索引,那么查询1和查询3的复杂性是什么?对于查询2,您说过复杂性可能是OO?s?o查询+o?i?k查询。这里是什么?通过s?o查询和?i?k查询连接起来会有任何成本吗?我指的是联合查询的两个方面,因为要计算查询,基本上是除非发生某些优化,否则要分别执行两个查询中的每一个并连接结果,所以计算这两个查询都需要计算每个查询的时间总和。没有真正的连接,只有连接。如果不知道实现,就很难说运行时。例如,要回答查询1,您几乎必须遍历图中的每个三元组并进行检查,依此类推。上的查询3也是如此。对于查询2,您将不得不执行类似的操作,但可能是O2 n^2=On^2。但是,如果你不知道系统的实现,问这个问题真的没有意义。一个图形中有300多亿个三元组?SPARQL只是一种查询语言;实现可以以多种不同的方式实现,因此对于给定查询的运行时复杂性没有通用的答案。这取决于实施情况。也就是说,大型三元组存储通常会索引数据,因此查询1和查询3将非常快。查询二可能是OO?s?o查询+o?i?k查询。是的,我有一个大的图。我可以理解SPARQL实现。假设没有索引,那么查询1和查询3的复杂性是什么?对于查询2,您说过复杂性可能是OO?s?o查询+o?i?k查询。这里是什么?通过s?o查询和?i?k查询连接起来会有任何成本吗?我指的是联合查询的两个方面,因为要计算查询,基本上是除非发生某些优化,否则要分别执行两个查询中的每一个并连接结果,所以计算这两个查询都需要计算每个查询的时间总和。没有真正的连接,只有连接。如果不知道实现,就很难说运行时。例如,要回答查询1,您几乎必须遍历图中的每个三元组并进行检查,依此类推。上的查询3也是如此。对于查询2,您将不得不执行类似的操作,但可能是O2 n^2=On^2。但是如果你不知道这个系统的实现,那么问这个问题真的没有意义。