owl: TransitiveProperty в запросе - PullRequest
1 голос
/ 27 декабря 2011

Я сделал семейное древо.Я также определил переходное свойство: childOf.Теперь я хочу сделать SPARQL Query, который дают мне все потомки одного из членов семьи.Как мне это сделать?Спасибо

1 Ответ

1 голос
/ 27 декабря 2011

Если ваше тройное хранилище поддерживает рассуждения 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/.

...