SPARQL构造;并非所有结果都被检索到

时间:2018-04-01 15:49:14

标签: sparql wikidata blazegraph

我想在Wikidata SPARQL query service上构建一个包含电影及其标签的RDF图。 基本上,这是我认为足够的查询:

CONSTRUCT{
  ?film wdt:P31 wd:Q11424 .
  ?film rdfs:label ?filmLabel.
}
WHERE{
  ?film wdt:P31 wd:Q11424 .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en, [AUTO_LANGUAGE]". }
}

似乎并非所有电影都出现在结果中(127636结果),我注意到的是没有出现的电影基本上是没有标签的电影。

但是,对同一信息的SELECT查询会返回更多结果(215734):

SELECT ?film ?filmLabel
WHERE{
  ?film wdt:P31 wd:Q11424 .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en, [AUTO_LANGUAGE]". 
  }
}

似乎并非所有符合WHERE子句的变量绑定(WHERE子句在两个查询之间共享)都在第一个查询的CONSTRUCT中使用,但所有这些都是用于SELECT

为什么?我错过了什么地方吗?

1 个答案:

答案 0 :(得分:2)

这是public static Class3 func1(Class1... t){ Class2[] target = new Class2[t.length]; for (int i = 0; i < t.length; ++i){ target[i] = transform(t[i]); } return func2(target); } 优化器中某处的错误,与标签服务无关。

可能的解决方法是Blazegraph hints

  • CONSTRUCT
  • hint:Query hint:queryEngineChunkHandler "Managed"

Try it!

hint:Query hint:constructDistinctSPO false