SPARQL 递归祖先查询

SPARQL recursive ancestor query

我被 SPARQL 中的递归查询困住了,我无法理解它。我想获得一个实例“a”(a hasParent b, b hasParent c, c hasParent d)的所有祖先,所以如果实例是“a”,结果将是“b, c ,and d”。

关于如何构造父项有一个父项有另一个父项的链接部分有什么想法吗? (不知道递归的深度)

参见SPARQL property paths和运算符+

SELECT *
{ <a> <hasParent>+ ?ancestor }