Сова: функциональные свойства и сова: разные
Я был бы благодарен за некоторую помощь в том, что, как я предполагал, было очень простым сценарием; но, будучи относительным новичком в 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 ответ
При создании хранилища:
- установите флажок Проверка на несоответствия;
- выберите набор правил под названием OWL2-RL.
Если вы попытаетесь импортировать ваши данные, 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.