如何在sparql中获得n-hops双向

How to get n-hops bidirectional in sparql

我正在使用以下查询来获取 subclass of 维基数据中给定概念的谓词。

SELECT ?item ?itemLabel ?linkTo {
  { wd:Q22673982 wdt:P279* ?item } UNION { ?item wdt:P279* wd:Q22673982 }
  OPTIONAL { ?item wdt:P279 ?linkTo }
  SERVICE wikibase:label {bd:serviceParam wikibase:language "en" }
}

为了将跳数限制为 10,我将上述查询扩展为以下内容。

PREFIX gas: <http://www.bigdata.com/rdf/gas#>

SELECT ?item ?itemLabel ?linkTo {
  { SERVICE gas:service {
    gas:program gas:gasClass "com.bigdata.rdf.graph.analytics.SSSP" ;
                gas:in wd:Q22673982 ;
                gas:traversalDirection "Forward" ;
                gas:out ?item ;
                gas:out1 ?depth ;
                gas:maxVisited 10 ;
                gas:linkType wdt:P279 .
  } } UNION { SERVICE gas:service {
    gas:program gas:gasClass "com.bigdata.rdf.graph.analytics.SSSP" ;
                gas:in wd:Q22673982 ;
                gas:traversalDirection "Reverse" ;
                gas:out ?item ;
                gas:out1 ?depth ;
                gas:maxVisited 10 ;
                gas:linkType wdt:P279 .
  } }
  OPTIONAL { ?item wdt:P279 ?linkTo }
  SERVICE wikibase:label {bd:serviceParam wikibase:language "en" }
}

我尝试使用 DBpedia 以类似的方式进行操作,如下所示。

SELECT * {
  { dbr:Word2vec dct:subject* ?item } UNION { ?item dct:subject* dbr:Word2vec }
  OPTIONAL { ?item dct:subject ?linkTo }
}

但是,我收到以下错误:Virtuoso 37000 Error SP031: SPARQL compiler: Variable '_::trans_subj_4_0' is used in subexpressions of the query but not assigned

我的问题是;是否可以在 DBpedia 中做同样的事情?

如果需要,我很乐意提供更多详细信息。

Virtuoso 37000 错误 SP031:SPARQL 编译器:... 错误在 github-hosted 上的几个未解决问题 (#530, #681) 中被标记Virtuoso 项目。

如此处所述,如果您只是 un-tick SPARQL 查询表单上的 无效变量的严格检查 框,您的查询可能 运行。