Я думаю, что у меня все еще есть фундаментальное непонимание аксиом 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
, не делая явного утверждения?
Спасибо