【问题标题】:SPARQL Construct query SegmentationSPARQL 构造查询分割
【发布时间】:2016-06-08 18:37:31
【问题描述】:

我在 DBpedia 端点上运行 SPARQL 构造查询。该查询用于获取描述所有电影的所有信息:

construct
{
    ?s ?p ?o
}
where
{
    ?s a <http://dbpedia.org/ontology/Film>.
{
  SELECT ?s ?p ?o
  {
       ?s ?p ?o
  } 
  group by ?s ?p 
}


}

查询工作正常。问题是 DBpedia 将其停在 10.000。我试图使偏移量为 0,但它确实有任何区别。另外,我不认为 chrome 会支持显示一百万三倍。因此,我在想是否有解决方案或提示,以便我可以分段检索数据,这意味着我从之前停止的地方开始。

【问题讨论】:

  • 子查询的思想是什么?只是为了了解您想要实现的目标,并可能帮助您了解为什么它没有意义。
  • @AKSW 我使用子查询的唯一原因是能够使用 group by。我想使用 group by 的原因,特别是在那里,是因为我想获得所有主语及其所有谓词和所有谓词的所有宾语。无论如何,从 DBpedia 检索有关电影的所有数据并不是一个好主意,因为它们会将偏移量停止在 40000。我发现了一种非常高效、快速且轻便的数据格式,称为 RDF HDT。整个 DBpedia RDF 转储都在这种格式的可用数据集中。
  • 在您的问题中,您没有谈到分组。在您的子查询中,您按 ?s?p 进行分组,但您选择 ?o 作为一个无效 SPARQL 的简单变量。
  • @AKSW 很好,我得到了我需要的结果。这才是真正重要的。问题不在于查询的准确性,而在于从 DBpedia 获取所有结果。并且因为后者在 10.000 处停止查询,所以我想从停止的地方继续。答案很简单:我不知道offset的作用。即使在我知道“偏移量”的作用之后,它也没有帮助我,因为 DBpedia 在 40.000 处停止了偏移量。因此,我决定下载整个 DBpedia RDF 转储。
  • DBpedia 没有停止,但 Virtuoso 有一些奇怪的限制,可以通过使用子选择来解决。但同样,分组没有意义。正如我所说,它是无效的 SPARQL。这不适用于另一家三合店。

标签: sparql rdf semantic-web dbpedia linked-data


【解决方案1】:

您可以尝试ORDER BYLIMITOFFSET。您还可以显着简化查询:

construct
{
   ?s ?p ?o
}
where
{
   ?s a <http://dbpedia.org/ontology/Film> .
   ?s ?p ?o
} ORDER BY ?s ?p ?o
  OFFSET 0 LIMIT 1000

然后为每个“段”更改OFFSET

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-11
    • 1970-01-01
    • 1970-01-01
    • 2012-04-04
    • 2015-05-09
    • 2013-02-17
    • 1970-01-01
    相关资源
    最近更新 更多