我认为我仍然对 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
不明确做出断言的情况下让隐士推理出我的目标?
谢谢