扩展 SPARQL 中主客体之间的路径

问题描述 投票:0回答:1

这个 SPARQL 查询返回

true
:

ASK {
  wd:Q216665 wdt:P279* wd:Q5185279 .
  }

https://w.wiki/6Mi5

有没有办法扩展路径(即

wdt:P279*
)以更好地理解主谓之间的联系?

sparql wikidata
1个回答
0
投票

如果您事先知道路径的长度最多 N,那么您可以对其进行硬编码。

例如N = 4:

SELECT ?start ?node1 ?node2 ?node3 ?end WHERE {
  BIND (wd:Q216665 as ?start)
  BIND (wd:Q5185279 as ?end)
  { ?start wdt:P279 ?node1 . ?node1 wdt:P279 ?end . } UNION
  { ?start wdt:P279 ?node1 . ?node1 wdt:P279 ?node2 . ?node2 wdt:P279 ?end . } UNION
  { ?start wdt:P279 ?node1 . ?node1 wdt:P279 ?node2 . ?node2 wdt:P279 ?node3 . ?node3 wdt:P279 ?end . }
}

甚至:

SELECT ?start ?node1 ?node2 ?node3 ?end WHERE {
  BIND (wd:Q216665 as ?start)
  BIND (wd:Q5185279 as ?end)
  ?start wdt:P279* ?end .
  OPTIONAL { ?start wdt:P279 ?node1 . ?node1 wdt:P279+ ?end .
  OPTIONAL { ?node1 wdt:P279 ?node2 . ?node2 wdt:P279+ ?end .
  OPTIONAL { ?node2 wdt:P279 ?node3 . ?node3 wdt:P279+ ?end .
  }}}
}
© www.soinside.com 2019 - 2024. All rights reserved.