Прежде чем вы сможете получить ответ, существует ряд неправильных представлений, которые вам необходимо решить.
Во-первых, подкласс и индивидуум - очень разные понятия. Отдельные лица (экземпляры) являются членами классов. Подкласс означает, что класс является подмножеством другого класса, что означает, что импликация (посредством вывода) состоит в том, что все члены подкласса являются членами класса (супер). (Только для справки: нет концепции наследования в OWL.)
Свойства второго уровня, такие как :People :has :Disease
, не имеют значения для лиц класса. Способ определения отношений свойства к классам заключается в том, чтобы установить домен и диапазон свойства. (Только с помощью :has
как имя свойства указывает на широкий набор неправильных представлений, возможно, от других типов языков.) Так что я хотел бы предложить имя :hasDisease
и утверждения:
:hasDisease rdfs:domain :People .
:hasDisease rdfs:range :Disease .
В-третьих, вы можете утверждать, что :John :hasDisease :Cancer
и что Джон заболел, учитывая, что :Cancer
является подклассом :Disease
. Для этого требуется стандартный аргумент RDFS. Кроме того, с учетом вышеприведенных определений в области и диапазонах и утверждения :Joy :hasDisease :Gout
, разумный разработчик RDFS будет заключить, что :Joy a :Person
и :Gout a :Disease
.
Есть несколько OWL-праймеров, которые вы можете найти через Google. Я бы посоветовал перечислить некоторые из них, чтобы получить общее представление о том, как работают OWL и аналитические профили.
Вы говорите, что хотите сделать вывод, что у Джона есть Рак, потому что у Иоанна есть люди и люди, имеющие болезни? Это не имеет смысла, поэтому может быть хорошей идеей быть немного понятнее, какие факты у вас есть и что вы хотите сделать. (И уникальные существительные лучше подходят для имен классов - т.е. ': Person' вместо': People'. – scotthenninger