【发布时间】:2020-07-29 13:03:24
【问题描述】:
我有这个通过 Wikidata 端点运行的 SPARQL 查询
SELECT ?bLabel ?b ?hLabel ?a ?cLabel
WHERE
{
wd:Q11462 ?a ?b.
wd:Q11095 ?a ?b.
?c ?a ?b.
?h wikibase:directClaim ?a .
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}
基本上,我正在寻找由 wd:Q11462 和 wd:Q11095 共享的关系,并查看还有什么共享该关系。它达到了 60 秒的时间限制。
但是,如果我分两部分运行多个查询:
首先,获取共享关系
SELECT ?bLabel ?b ?hLabel ?a
WHERE
{
wd:Q11462 ?a ?b.
wd:Q11095 ?a ?b.
?h wikibase:directClaim ?a .
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}
然后,对于每个获得的关系,运行一个查询以查找与他们共享的其他内容。
"""
SELECT ?cLabel
WHERE
{
?c wdt:P131 wd:Q3586.
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}
"""
整个查询只运行 2.5 秒。
由于限制,我希望只用一个查询就能达到同样的速度。我该怎么办?
【问题讨论】: