Pagination SULT(1个查询×7秒=7秒),并在本地执行任何重要的分页演示。

Pagination SULT(1个查询×7秒=7秒),并在本地执行任何重要的分页演示。,pagination,sparql,dbpedia,Pagination,Sparql,Dbpedia,语言过滤器的处理由SPARQL引擎决定。它如何存储文本?它是否可以使用索引或其他技术来避免全文扫描以获得所需语言的文本 您可以将文字存储为“chat”@en字符串,但为给定属性选择所有英文文字将需要扫描所有属性文字以查找@en匹配项 在一些SPARQL引擎中,您可以获得实际的执行计划。例如,下面是在Virtuoso中实现的方法,但是,您不能在公共端点上使用它 对于RDBMS,查询优化、执行和查询提示都有很好的文档记录,您可以很容易地找到数据库真正做了什么来回答您的查询,以及如何修改模式或查询以获

语言过滤器的处理由SPARQL引擎决定。它如何存储文本?它是否可以使用索引或其他技术来避免全文扫描以获得所需语言的文本

您可以将文字存储为
“chat”@en
字符串,但为给定属性选择所有英文文字将需要扫描所有属性文字以查找
@en
匹配项

在一些SPARQL引擎中,您可以获得实际的执行计划。例如,下面是在Virtuoso中实现的方法,但是,您不能在公共端点上使用它


对于RDBMS,查询优化、执行和查询提示都有很好的文档记录,您可以很容易地找到数据库真正做了什么来回答您的查询,以及如何修改模式或查询以获得最佳结果。IMHO,SPARQL引擎在这方面还不够成熟。

“我希望langmatch不是基于regex的?”谁说它是基于regex的?文档说明“如果语言标记(第一个参数)与RFC4647第3.3.1节中定义的基本过滤方案中的语言范围(第二个参数)匹配,则返回true。语言范围是与RFC4647第2.1节中的语言标记匹配的基本语言范围。语言范围“*”与任何非空语言标记字符串匹配。”不区分大小写,但它不是正则表达式。将
过滤器
移动到
可选
中是一个语义不同的查询,因为将其放在内部会保留更多数据,这意味着
不同的
按顺序
有更多的工作要做(特别是因为
不同的
按顺序
后应用). 由于查询的其余部分,最终结果是等价的,尽管查询的语义不同,但原始查询基本上应该执行better@RobV你是对的;我对这个问题想错了。现在,当
过滤器
可选
之外时,当
标签
未绑定时,它总是会失败,对吗?如果是这样的话,那么真的没有理由让标签成为可选的,是吗?不一定,在没有标签的情况下,
lang(?label)=“当
?label
解除绑定时,
应该是真的(我想)因此,除了那些带有英文标签的值外,您还保留了没有标签的
?p
值。我相信这是在
lang()
behave wrt中讨论过的。最近在另一个问题中出现了未绑定变量,但我不记得在哪里(可能是搜索功能糟糕的地方的答案)啊,这里是-@RobV(我发布了那个问题。)但这是关于在空字符串的情况下匹配是如何工作的,因为它们不是合法的语言标记(尽管它们是
lang()的指定结果)
)。然而,在这里,我认为
lang(?label)
?label
未绑定时将是一个错误,因此我们将使用
langMatches(error,“en”)| error=“en”
这将最终成为
error | error
,我认为它应该变成
false
。因此,尽管标签是可选的,但我们已经删除了所有未绑定的情况。(当然,除非实现将一些非错误行为定义为扩展,但我们不要这样做。)
select distinct ?objProperty ?label where {
 ?x ?objProperty <http://dbpedia.org/resource/United_States>.
 ?objProperty a owl:ObjectProperty.
 OPTIONAL{?objProperty rdfs:label ?label}
}order by ?label limit 10 offset 3
select distinct ?objProperty ?label where {
 ?a ?objProperty   <http://dbpedia.org/resource/United_States>.
 ?objProperty a owl:ObjectProperty.
 OPTIONAL{?objProperty rdfs:label ?label}
 FILTER ( LANGMATCHES(lang(?label),"EN") || LANG(?label) = "")
}order by ?label limit 10 offset 3
langMatches(lang(?label),"en") || lang(?label) = "en"
      langMatches(error, "en") || error = "en"
                         error || error
                              false
select distinct ?p ?label where {
  ?x ?p dbpedia:United_States .
  ?p a owl:ObjectProperty ;
     rdfs:label ?label .
  filter( langMatches(lang(?label),"en") || lang(?label) = "" )
}
order by ?label
limit 10
offset 3