У меня есть онтология OWL2, сочетающая технологические процессы и численные модели. Мне нужно выяснить, какой процесс может быть смоделирован с какой моделью. Я ввел требования, которые выполняются процессом, в то время как модели имеют требования. Я могу сделать это с людьми, но не с классами.
Я использую Protege 5.1, Fact ++.
Классы:
Процессы
- Proc1
EquivalentTo: Processes and (fulfillRestriction exactly 1 Req1)
Требования
- Req1
Equivalent to Requirements and (hasTemperature exactly 1 (temperature only xsd:double[ "5.0"^^xsd:double , <= "150.0"^^xsd:double])
Модели
- Модель1
EquivalentTo: Models and (hasRestriction exactly 1 Req1)
Теперь у меня есть свойство объекта:
ObjectProperty: testIsModelOf
SubPropertyChain: hasRestriction o inverse (fulfillRestriction)
Я определил лиц:
Individual: mod1
Types: Model1
Facts: hasRestriction requir1
Individual: requir1
Types: Req1
Individual: process1
Types:
Proc1
Facts: fulfillRestriction requir1
Запрашиваемая (с помощью DLQuery):
Models that testIsModelOf some Proc1
Если я определю лиц для этих трех классови определить свойства объекта между ними, результат будет таким, как ожидалось (DLQuery говорит, что mod1 является экземпляром Models that testIsModelOf some Proc1
). Я ожидал, что также получу класс Model1 в качестве прямого подкласса (или эквивалентного класса?) Результата запроса, но этого не произойдет. Можно ли получить класс не только индивидуальный - без SWRL?