Рассуждения об ограничении кардинальности OWL

Я думаю, что у меня все еще есть фундаментальное непонимание аксиом OWL :(.

Вот небольшая тестовая онтология, которую я создал:

@prefix xsd:      <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf:      <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:     <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl:      <http://www.w3.org/2002/07/owl#> .
@prefix :         <http://foobar.com/test/> .

: a owl:Ontology .

:prop1 a owl:DatatypeProperty .
:prop2 a owl:DatatypeProperty .

:Class1 owl:equivalentClass [
    a owl:Restriction ;
    owl:onProperty :prop1 ;
    owl:cardinality "1"^^xsd:int
  ] .

:Ind1 a owl:NamedIndividual ;
  :prop1 "value1"^^xsd:string .

:Class2 owl:equivalentClass [
    a owl:Restriction ;
    owl:onProperty :prop2 ;
    owl:minCardinality "1"^^xsd:int
  ] .

:Ind2 a owl:NamedIndividual ;
  :prop2 "value2"^^xsd:string .

Когда я запускаю в Protege резонатор Hermit над этим, я получаю ожидаемый результат с :Ind2, то есть он является членом :Class2. Но я не получу то же самое для :Ind1 в том, что касается членства в :Class1.

Я подозреваю, что это связано с предположением об открытом мире и что возможно, что :Ind1 все еще может иметь другое утверждение :prop1. Итак, пара вопросов:

  • Я правильно диагностировал проблему?
  • Могу ли я получить пример того, как я могу заставить свою цель для отшельника сделать вывод, что :Ind1 является членом :Class1, не делая явного утверждения?

Спасибо


person stan_plogic    schedule 26.04.2021    source источник


Ответы (2)


помещение

Семантика OWL определяется в соответствии с предположением об открытом мире, поэтому вы не можете проверить, количество элементов для определенного свойства равно ровно N, поскольку могут существовать другие экземпляры свойства, даже если они не объявлены.

Точнее, это проверки, которые вы можете сделать:

Cardinality check Possible answers Sound Complete
At-least N Yes (if N or more)
I don't know (otherwise)
Yes No
Exactly N No (if N+1 or more)
I don't know (otherwise)
Yes No
At-most N No (if N+1 or more)
I don't know (otherwise)
Yes No

Решение

Вы можете проверить, равно ли количество элементов точно 1, только если вы явно указываете, что "value1" является единственным значением для :Ind1. В этом случае :Ind1 будет частью :Class1.

В ФОЛ:

∀x.(R(Ind1, x) → x = значение1)

In DL:

∃R⁻.{Инд1} ⊑ {значение1}

В OWL2 (не тестировалось):

:Ind1
  a owl:NamedIndividual ;
  a [ a                 owl:Restriction ;
      owl:onProperty    :prop1 ;
      owl:allValuesFrom [ a          rdfs:Datatype ;
                          owl:oneOf  ( "value1"^^xsd:string )
                        ]
    ] .
person horcrux    schedule 26.04.2021
comment
Пожалуйста, взгляните на мой комментарий ниже, поскольку он, кажется, помогает без необходимости объявлять индивидуальные ограничения. - person stan_plogic; 05.05.2021
comment
@stan_plogic По какой-то причине я считал само собой разумеющимся, что вы искали расширенное решение. Если вы можете модифицировать свои интенсиональные аксиомы, это решение явно лучше. - person horcrux; 05.05.2021
comment
Я все еще восхищаюсь вашим решением. Рад слышать, что для него есть имя ... :) Если бы вы могли добавить оба решения к своему ответу, я удалю свой комментарий ниже и снова приму ваш ответ. Я могу отредактировать его, но, похоже, это включено в список обзоров, так как я все еще новичок на этой платформе. - person stan_plogic; 06.05.2021
comment
@stan_plogic Для меня это нормально ;-) Во всяком случае, я понял, почему я не предлагаю вам решение FunctionalProperty. В основном я думал, что вы ищете общее решение для любого вида minCardinality/cardinality, и вы хотели понять основную разницу между ними. - person horcrux; 06.05.2021
comment
Справедливо. Я приму ваш ответ, если только я не заставлю меня читать интенсиональные и экстенсиональные определения :). Спасибо, что нашли время. Очень признателен. - person stan_plogic; 07.05.2021

Спасибо @horcrux за подсказку. В конечном итоге сработало также объявление свойств как owl:FunctionalProperty. Редактирование объявлений свойств на:

:prop1 a owl:DatatypeProperty, owl:FunctionalProperty .
:prop2 a owl:DatatypeProperty, owl:FunctionalProperty .

Это не требует добавления дополнительных ограничений к каждому отдельному объявлению.

person stan_plogic    schedule 27.04.2021