Для первичного ключа необходимо создать свойство, которое будет owl:InverseFunctionalProperty
.Например, представьте, что класс Person
имеет первичный ключ для номера социального страхования (SSN), тогда в нашей онтологии мы имеем:
:hasSSN rdf:type owl:InverseFunctionalProperty .
Логически это означает, что если два элемента A и Bзначение свойства :hasSSN
, тогда A и B. - это одно и то же лицо.
. Наиболее близким к внешним ключам является ranges
, так что вы можете сказать, что диапазон предиката :hasSSN
являетсяclass :SSN
:
:hasSSN rdfs:range :SSN .
Диапазон работает как для классов, так и для диапазонов данных.
В Protege вы можете пометить предикат как owl:InverseFunctionalProperty
при переходе на панель свойств объекта.флажок для этого.Прямо рядом с ним вы можете добавить диапазоны и домены.