SPARQL构造;并非所有结果都被检索
我正在构建一个RDF图,其中包含胶片及其标签。 基本上,这是我认为足够的问题: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]". } } 似乎不是所有的电影都出现在结
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" . }
}