Если ваше тройное хранилище поддерживает рассуждения OWL, и вы определили свойство childOf
как транзитивное (если, кстати, оно не должно называться descendantOf
!), То оно должно выводить свойства childOf
непосредственно между всемисвязанные узлы.Итак, этого должно быть достаточно, чтобы запросить его следующим образом (префиксы для краткости опущены):
SELECT DISTINCT * {
?x :childOf ?y
}
Однако, если ваш тройной магазин не использует рассуждения OWL, вы можете достичь того же результата с помощью SPARQL 1.1пути свойств для запроса косвенных отношений:
SELECT DISTINCT * {
?x :childOf+ ?y
}
Обратите внимание на '+' после childOf
, это означает, что предикат может совпадать 1 или более раз.Подробнее о путях свойств SPARQL 1.1 можно узнать по адресу http://www.w3.org/TR/sparql11-property-paths/.