#rdf #semantic-web #owl #protege
#rdf #semantic-web #owl #protege
Вопрос:
Используя protege, я создаю файл RDF. Теперь я хочу знать, как указать слот для первичного и внешнего ключей для заданных классов? Заранее спасибо
Ответ №1:
Для первичного ключа вам нужно создать свойство, которое является owl:InverseFunctionalProperty
. Например, представьте, что класс Person
имеет первичный ключ для номера социального страхования (SSN), тогда в нашей онтологии мы имели бы:
:hasSSN rdf:type owl:InverseFunctionalProperty .
Логически это означает, что если два элемента A и B имеют значение для свойства :hasSSN
, то A и B являются одним и тем же лицом.
Наиболее близкими к внешним ключам являются ranges
, поэтому можно сказать, что диапазон предиката :hasSSN
является классом :SSN
:
:hasSSN rdfs:range :SSN .
Диапазон работает как для классов, так и для диапазонов данных.
В protege вы можете пометить предикат как owl:InverseFunctionalProperty
переходящий на панель свойств объекта, для этого есть флажок. Прямо рядом с ним вы можете добавить диапазоны и домены.
Комментарии:
1. спасибо за ваш ответ. Но я не могу найти вышеуказанную опцию, когда пытаюсь создать файл RDF.
2. @Winbros вы выбрали панель свойств объекта? кстати, этот скриншот взят из Protege версии 4.1 — возможно, у вас другая версия.
3. Я использую версию 3.4. Позвольте мне проверить еще раз и вернуться к вам