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

SPARQL构造;并非所有结果都被检索,sparql,wikidata,blazegraph,Sparql,Wikidata,Blazegraph,我正在构建一个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]". } } 似乎不是所有的电影都出现在结

我正在构建一个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):

似乎并不是所有满足
WHERE
子句(两个查询之间共享
WHERE
子句)的变量绑定都在第一个查询的
构造中使用,但它们都在
SELECT
中使用


为什么呢?我遗漏了什么吗?

这是
构造
优化器中的一个bug,与标签服务无关

可能的解决办法如下:

  • 提示:查询提示:queryEngineChunkHandler“Managed”
  • 提示:查询提示:constructDistinctSPO false


您确定构造查询中将返回任何标签吗?这是Blazegraph的一个“神奇”功能,超越了标准SPARQL;我认为这基本上就是问题所在。根据构造规范,它应该是好的,顺便说一句,这是一个奇怪的问题,找不到GH问题。感谢您展示解决方案-尽管它看起来像是
hint:Query-hint:queryEngineChunkHandler“Managed”。
并不能用于所有查询,所以我坚持使用
hint:Query-hint:constructiondistinctspo-false
之后将继续使用重复数据消除(或将其留给triple store)
SELECT ?film ?filmLabel
WHERE{
  ?film wdt:P31 wd:Q11424 .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en, [AUTO_LANGUAGE]". 
  }
}
CONSTRUCT {
  ?film wdt:P31 wd:Q11424 .
  ?film rdfs:label ?filmLabel .
}
WHERE { 
  ?film wdt:P31 wd:Q11424 .
  hint:Query hint:queryEngineChunkHandler "Managed" .
  # hint:Query hint:constructDistinctSPO false .  
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en" . }
}