这个 SPARQL 查询返回
true
:
ASK {
wd:Q216665 wdt:P279* wd:Q5185279 .
}
有没有办法扩展路径(即
wdt:P279*
)以更好地理解主谓之间的联系?
如果您事先知道路径的长度最多 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 .
}}}
}