Почему этот запрос DL не возвращает ожидаемых результатов?
Я создал простую онтологию OWL в Protege, которая описывает человеческие отношения:
- Классы: Человек, Мужчина, Женщина
- Человек супер класс мужчины и женщины
- Мужчина и Женщина не пересекаются
- Свойства объекта: hasChild
- Доман и диапазон - Персона
- Частные лица: a (мужчина), b (мужчина), c (мужчина) --- x (женщина), y (женщина), z (женщина)
- Утверждения:
- hasChild x
- hasChild y
- c hasChild a
Теперь я хочу опросить всех людей, чьи дети являются только дочерью. Я написал этот запрос на вкладке запроса DL:
Person and hasChild only Woman
Но это не возвращает экземпляров! Или простой запрос для людей, которые имеют только двух детей
Person and hasChild exactly 2
Оба эти запроса не возвращают ни одного экземпляра. Может кто-нибудь сказать, в чем проблема?
Спасибо
1 ответ
У DL есть Предположение об открытом мире (OWA). Это означает, что знание, которое содержится в онтологии, является неполным. Альтернативой является Предположение о закрытом мире (CWA), которое используется, например, в базах данных. В CWA все, что не заявлено, отсутствует.
Согласно OWA, все, что мы знаем из приведенной выше онтологии, - это то, что у a и c есть несколько детей. Мы не знаем, имеет ли a более одного дочернего элемента, поскольку x и y могут быть одинаковыми (чтобы избежать этой ситуации, следует использовать аксиому DifferentIndividuals()). Мы не знаем, являются ли они единственными детьми: в открытом мире любой человек может иметь других детей, любого пола, которые опущены в онтологии. Вот почему ответ на этот запрос является пустым набором.
Самый простой способ получить ожидаемый ответ или закрыть знания. Если онтология будет содержать аксиому
a instanceOf (hasChild only {x,y})
тогда a станет ответом на первый запрос. Если, кроме того, аксиома
DifferentIndividuals(x,y)
будет добавлен, тогда второй запрос вернет. Protege позволяет легко делать аксиомы 2-го типа.