У меня проблемы с соотнесением классов (не отдельных лиц) в моей онтологии. Мне нужно знать, какой OWL (full-dl-lite) позволяет связывать классы. я имею в виду, что домен и диапазон свойств должны быть http://www.w3.org/2002/07/owl#Class. Возможно ли это? спасибо за подсказку.
Связывание классов в онтологии
Ответы (1)
Во-первых, забудьте о спецификации на странице http://www.w3.org/TR/owl-guide/, http://www.w3.org/TR/owl-ref/ и http://www.w3.org/TR/owl-semantics/ < / а>. Официальная рекомендация для языка веб-онтологий - OWL 2, где различные подъязыки - OWL 2 EL, OWL 2 QL, OWL 2 RL, OWL 2 DL и OWL 2 Full (прочтите о новые возможности OWL 2). OWL Lite больше не существует, и о нем следует забыть навсегда.
Во-вторых, в OWL (как 1, так и 2) всегда можно было связать классы, используя свойства аннотации, как это в Черепаха:
# valid in all variants and OWL 1 and OWL 2
:prop a owl:AnnotationProperty .
:C1 a owl:Class .
:C2 a owl:Class;
:prop :C2 .
В OWL 1 было невозможно определить домен или диапазон для свойства аннотации, но теперь это возможно в OWL 2:
# works in all variants of OWL 2
:prop a owl:AnnotationProperty;
rdfs:domain owl:Class;
rdfs:range owl:Class .
Другой вариант - полагаться на понятие «каламбур», то есть использовать IRI класса для индивидуума, например:
# works in all variants of OWL 2
:prop a owl:ObjectProperty .
:C1 a owl:Class .
:C2 a owl:Class;
:prop :C2 .
Однако вы не можете использовать owl:Class
в качестве домена или диапазона свойства объекта. Последняя возможность - не заботиться и использовать OWL (1/2) Full:
# works in OWL 1 Full, OWL 2 Full
:prop rdfs:domain owl:Class;
rdfs:range owl:Class .
:C1 a owl:Class;
:prop :C2 .
Обратите внимание, что большинство рассуждений OWL DL не будут давать сбой на этом входе (точнее, все рассуждения, которые я когда-либо тестировал, не потерпят сбой), так что на самом деле это довольно безопасно.