Сова: функциональные свойства и сова: разные

Я был бы благодарен за некоторую помощь в том, что, как я предполагал, было очень простым сценарием; но, будучи относительным новичком в OWL и GraphDB, я, возможно, допустил некоторую базовую ошибку.

У меня есть очень простой указанный в Turtle пример OWL:

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix demo: <urn:demo> .

demo:Gender a owl:Class .

demo:Male a demo:Gender .
demo:Female a demo:Gender .

demo:Male owl:differentFrom demo:Female .

demo:Person a owl:Class .

demo:hasGender a owl:ObjectProperty, owl:FunctionalProperty;
                rdfs:domain demo:Person;
                rdfs:range demo:Gender .

demo:Per1 a demo:Person;
            demo:hasGender demo:Male;
            demo:hasGender demo:Female .

В сущности, у меня есть класс под названием "Пол", и я утверждаю, что есть два разных члена - мужчина и женщина.

Затем я определяю другой класс Person с функциональным свойством hasGender, диапазон которого равен Gender.

Наконец, я утверждаю экземпляр Person, а также два отдельных утверждения, что это и мужчина, и женщина.

Теперь, насколько я понимаю, это противоречие; Я утверждал, что свойство hasGender является функциональным, поэтому для данного лица должен быть только один пол. Я также утверждал, что мужчины и женщины различаются, поэтому, когда я импортировал это в GraphDB, я ожидал, что из-за этого произойдет сбой.

Но GraphDB рад загрузить оба утверждения. Я что-то пропустил?

1 ответ

Решение

При создании хранилища:

Если вы попытаетесь импортировать ваши данные, GraphDB должен будет сказать:

Could not import data; com.ontotext.trree.consistency.ConsistencyException:
Consistency check eq_diff1_1 failed:
urn:demoMale owl:differentFrom urn:demoMale
urn:demoMale owl:sameAs urn:demoMale

Или снимите флажок, импортируйте данные и затем выполните:

PREFIX sys: <http://www.ontotext.com/owlim/system#>
INSERT DATA { []  sys:consistencyCheckAgainstRuleset "owl2-rl" }

Другой подход к моделированию заключается в создании Male а также Female как непересекающиеся подклассы Person,
В отличие от owl:FunctionalProperty, owl:AllDisjointClasses покрыто OWL 2 QL.

Другие вопросы по тегам