Подтвердить что ты не робот

В чем разница между DatatypeProperty, ObjectProperty и FunctionalProperty, и когда я должен их использовать?

При написании онтологии существует несколько очень часто используемых типов, в том числе:

  • DatatypeProperty
  • ObjectProperty
  • FunctionalProperty
  • InverseFunctionalProperty

Первые три вида выглядят так, как будто они будут использоваться определенным образом, но я нахожу свою идею о том, что их бросают вызов тем, как я видел их в FOAF.

Когда каждый из них будет использоваться или не использоваться?

4b9b3361

Ответ 1

Первые два из них, DatatypeProperty и ObjectProperty, описывают, какие значения имеет тройка с этим свойством. Свойства Datatype связывают людей с литеральными данными (например, строками, числами, типами данных и т.д.), Тогда как свойства объекта связывают людей с другими людьми. Что-то вроде hasAge, как правило, является свойством типа данных, поскольку возраст - это число, но hasMother - это свойство объекта, так как мать является другим человеком.

Последние два из них, FunctionalProperty и InverseFunctionalProperty, используются для ограничения некоторых значений свойств для отдельных лиц. Что-то функциональное свойство означает, что данный человек может иметь не более одного значения для него. Логически это означает, что если p - функциональное свойство, то

& FORALL; x, y, z. ([p (x, y) & wedge; p (x, z)] и rightarrow; y = z)

Поскольку OWL не делает предположения о уникальном имени, другой IRI может ссылаться на одного и того же человека, поэтому, если hasMother является функциональным свойством, мы можем сделать вывод из

:John :hasMother :Margaret .
:John :hasMother :Peggy .

что

:Margaret owl:sameAs :Peggy

Конечно, это также можно использовать для предоставления некоторого "отрицательного вывода". Если мы знаем, что Сьюзен - другой человек, чем Пегги, тогда мы можем сделать вывод, что Сьюзан не мать Джона. I.e., из

:John :hasMother :Peggy .
:Susan owl:differentFrom :Peggy .

что false, что

:John :hasMother :Susan .

Для свойств типа данных это работает одинаково, но там гораздо больше встроена информация о том, какие литералы разные. Например, рассудитель должен знать, что "1"^^xsd:int отличается от "2"^^xsd:int.

Обратные функциональные свойства аналогичны, но в обратном направлении. Если свойство p является обратным функциональным свойством, то для данного отдельного y должно быть не более одного x такого, что p (x, y).

Однако здесь есть небольшая оговорка. OWL 2 DL поддерживает только свойства обратного функционального объекта, а не свойства обратного функционального типа данных. Хотя мы можем описать семантику, что свойство обратного функционального типа данных будет иметь значение & forall; x, y, z ([p (x, z) & wedge; p (y, z)] и rightarrow; x = y), мы не можем иметь эквивалентность между условиями, что

p - обратное функциональное свойство

и что

p -1 - функциональное свойство

поскольку свойства типа данных не могут иметь обратные. Это связано с тем фактом, что RDF (по крайней мере, в текущих версиях, я слышал, что там говорят об изменении этого, хотя я не знаю, как изменится ли изменение в OWL) не допускает литеральных значений в качестве объектов троек. Если свойства типа данных имели обратные вызовы, мы имели бы такую ​​ситуацию:

:hasName owl:inverseOf :nameOf .
:john :hasName "John"@en .

и мы сделали бы

"John"@en :nameOf :john . # Not legal.

Это означает, что обратное функциональное свойство должно быть свойством объекта.

(В OWL Full аргумент может использовать логическое утверждение и делать соответствующие выводы там, я думаю, на основе логического представления. В качестве альтернативы, некоторые аргументы, например основанные на правилах рассуждения) удалить ограничения на отсутствие" литералов, разрешенных как субъектов ", из их внутренних представлений, а затем отфильтруйте результаты на выходе, чтобы убедиться, что нелегальный RDF не уходит.)

Теперь посмотрим на упомянутые вами случаи:

пол (функциональный и тип данных)

Это функционально, потому что мы ожидаем, что у каждого человека будет не более одного значения для гендерного свойства. Это свойство типа данных, потому что разработчики FOAF ожидали, что значения будут такими, как "male" или "female". Если бы они определили некоторые символические константы, например, <http://.../MALE> и <http://.../FEMALE>, то это могло быть свойство объекта.

mbox (обратный функционал и объект)

mbox - свойство объекта, предположительно потому, что его значения являются IRI формы <mailto:[email protected]>. Это обратное функциональное свойство, потому что для заданного почтового ящика мы ожидали бы, что максимум один человек будет иметь этот почтовый ящик. (Конечно, некоторые люди могут обмениваться почтовым ящиком, так что это не совсем правильно, но хорошо.) Однако это не функциональное свойство, потому что у человека может быть просто несколько почтовых ящиков.

mbox_sha1sum (обратный функционал и тип данных)

Насколько я помню, это свойство относится к одному шагу в их почтовом ящике. Использование этого свойства означает, что люди не обязательно должны делиться своим настоящим адресом электронной почты. Это обратное функциональное свойство по той же причине, что и mbox; мы ожидаем, что каждый mbox_sha1sum будет принадлежать не более чем одному человеку. Точно так же это не функциональное свойство, потому что у человека может быть более одного почтового ящика и, следовательно, более одного sha1sum.

Это проблемный случай, поскольку это свойство типа данных и обратное функциональное свойство, и это не должно происходить (как описано выше). Однако OWL Full reasoner все же может позволить вам сделать вывод, что если x и y оба имеют один и тот же mbox1_shasum, то x = y.

Ссылки

Вы можете прочитать формальные определения в OWL 2 Web Ontology Language Direct Semantics (второе издание). Вас будет интересовать 2.3.2 Аксиомы выражения свойств объекта и 2.3.3 Аксиомы выражения свойств данных.