Sparql VALUES子句中的路径匹配

Sparql VALUES子句中的路径匹配,sparql,wikidata,Sparql,Wikidata,我试图在sparql中的VALUES子句中执行路径匹配,以便匹配wikidata中战斗和围攻的所有实例和子类。下面的请求被重复 在这种情况下,值,尤其是与/结合使用,似乎会混淆Blazegraph的查询优化器 使用联合而不是值: 选择不同的?战斗?战斗标签{ {?战斗wdt:P31/wdt:P279*wd:Q178561} 联合 {?作战wdt:P31/wdt:P279*wd:Q188055} ?战斗rdfs:标签?查询工具。 过滤器(REGEX(?queryByTitle,“saratoga”

我试图在sparql中的VALUES子句中执行路径匹配,以便匹配wikidata中战斗和围攻的所有实例和子类。下面的请求被重复


在这种情况下,
,尤其是与
/
结合使用,似乎会混淆Blazegraph的查询优化器


使用
联合
而不是

选择不同的?战斗?战斗标签{
{?战斗wdt:P31/wdt:P279*wd:Q178561}
联合
{?作战wdt:P31/wdt:P279*wd:Q188055}
?战斗rdfs:标签?查询工具。
过滤器(REGEX(?queryByTitle,“saratoga”,“i”))
服务wikibase:label{bd:serviceParam wikibase:language“[AUTO_language],en”}
}
或者,禁用优化器并指定显式顺序:

选择不同的?战斗?战斗标签{
提示:查询提示:优化器“无”。
值?类型{wd:Q178561 wd:Q188055}
?子类型wdt:P279*?类型。
?作战wdt:P31?子类型。
?战斗rdfs:标签?查询工具。
过滤器(REGEX(?queryByTitle,“saratoga”,“i”))
服务wikibase:label{bd:serviceParam wikibase:language“[AUTO_language],en”}
}

使用
联合
而不是
;或者
SELECT DISTINCT?battle WHERE{hint:Query hint:optimizer“None”。value?type{wd:Q178561 wd:Q188055}?subtype wdt:P279*?type。?battle wdt:P31?subtype。?battle rdfs:label?queryByTitle.FILTER(REGEX(?queryByTitle,“saratoga”,“i”))服务维基base:label{bd:servicepram wikibase:language“[AUTO_language],en.”}
@StanislavKralin谢谢,您的解决方案有效。请随意发布答案,我会接受的。
SELECT DISTINCT ?battle ?battleLabel WHERE {
  {
    SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
    VALUES ?type {wd:Q178561 wd:Q188055} ?battle (wdt:P31/wdt:P279*) ?type .
    ?battle rdfs:label ?queryByTitle.
    FILTER(REGEX(?queryByTitle, "saratoga", "i"))
  }
}