推理器未能在A类中对类进行分类,该类被定义为另一类b。
的补充。我在Protege 5中创建了一个最小的猫头鹰本体论示例(基于著名的披萨示例),以说明这个问题。
有两个披萨班:美国和苏活区,前者,带有肉浇头,后者带有蔬菜浇头。然后有两个类别:素食性的蛋皮定义为那些带有蔬菜浇头的比萨饼和非蔬菜披萨,因为那些不是素食的比萨饼。SOHO在素食性皮萨中正确地分类了,但Americana并未被归类为NonvetainarianPizza。
有人可以解释怎么了吗?
这是代码:
<?xml version="1.0"?>
<Ontology xmlns="http://www.w3.org/2002/07/owl#"
xml:base="http://www.pizza.com/ontologies/pizza-minimal.owl"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
ontologyIRI="http://www.pizza.com/ontologies/pizza-minimal.owl"
versionIRI="http://www.pizza.com/ontologies/pizza-minimal.owl/v1.0">
<Prefix name="" IRI="http://www.pizza.com/ontologies/pizza-minimal.owl"/>
<Prefix name="owl" IRI="http://www.w3.org/2002/07/owl#"/>
<Prefix name="rdf" IRI="http://www.w3.org/1999/02/22-rdf-syntax-ns#"/>
<Prefix name="xml" IRI="http://www.w3.org/XML/1998/namespace"/>
<Prefix name="xsd" IRI="http://www.w3.org/2001/XMLSchema#"/>
<Prefix name="rdfs" IRI="http://www.w3.org/2000/01/rdf-schema#"/>
<Declaration>
<ObjectProperty IRI="#isToppingOf"/>
</Declaration>
<Declaration>
<ObjectProperty IRI="#hasTopping"/>
</Declaration>
<Declaration>
<Class IRI="#NonVegetarianPizza"/>
</Declaration>
<Declaration>
<Class IRI="#SohoPizza"/>
</Declaration>
<Declaration>
<Class IRI="#VegetableTopping"/>
</Declaration>
<Declaration>
<Class IRI="#VegetarianPizza"/>
</Declaration>
<Declaration>
<Class IRI="#Pizza"/>
</Declaration>
<Declaration>
<Class IRI="#MeatTopping"/>
</Declaration>
<Declaration>
<Class IRI="#PizzaTopping"/>
</Declaration>
<Declaration>
<Class IRI="#AmericanaPizza"/>
</Declaration>
<EquivalentClasses>
<Class IRI="#NonVegetarianPizza"/>
<ObjectIntersectionOf>
<Class IRI="#Pizza"/>
<ObjectComplementOf>
<Class IRI="#VegetarianPizza"/>
</ObjectComplementOf>
</ObjectIntersectionOf>
</EquivalentClasses>
<EquivalentClasses>
<Class IRI="#VegetarianPizza"/>
<ObjectIntersectionOf>
<Class IRI="#Pizza"/>
<ObjectAllValuesFrom>
<ObjectProperty IRI="#hasTopping"/>
<Class IRI="#VegetableTopping"/>
</ObjectAllValuesFrom>
</ObjectIntersectionOf>
</EquivalentClasses>
<SubClassOf>
<Class IRI="#AmericanaPizza"/>
<Class IRI="#Pizza"/>
</SubClassOf>
<SubClassOf>
<Class IRI="#AmericanaPizza"/>
<ObjectSomeValuesFrom>
<ObjectProperty IRI="#hasTopping"/>
<Class IRI="#MeatTopping"/>
</ObjectSomeValuesFrom>
</SubClassOf>
<SubClassOf>
<Class IRI="#AmericanaPizza"/>
<ObjectAllValuesFrom>
<ObjectProperty IRI="#hasTopping"/>
<Class IRI="#MeatTopping"/>
</ObjectAllValuesFrom>
</SubClassOf>
<SubClassOf>
<Class IRI="#MeatTopping"/>
<Class IRI="#PizzaTopping"/>
</SubClassOf>
<SubClassOf>
<Class IRI="#SohoPizza"/>
<Class IRI="#Pizza"/>
</SubClassOf>
<SubClassOf>
<Class IRI="#SohoPizza"/>
<ObjectSomeValuesFrom>
<ObjectProperty IRI="#hasTopping"/>
<Class IRI="#VegetableTopping"/>
</ObjectSomeValuesFrom>
</SubClassOf>
<SubClassOf>
<Class IRI="#SohoPizza"/>
<ObjectAllValuesFrom>
<ObjectProperty IRI="#hasTopping"/>
<Class IRI="#VegetableTopping"/>
</ObjectAllValuesFrom>
</SubClassOf>
<SubClassOf>
<Class IRI="#VegetableTopping"/>
<Class IRI="#PizzaTopping"/>
</SubClassOf>
<InverseObjectProperties>
<ObjectProperty IRI="#hasTopping"/>
<ObjectProperty IRI="#isToppingOf"/>
</InverseObjectProperties>
<ObjectPropertyDomain>
<ObjectProperty IRI="#hasTopping"/>
<Class IRI="#Pizza"/>
</ObjectPropertyDomain>
<ObjectPropertyRange>
<ObjectProperty IRI="#hasTopping"/>
<Class IRI="#PizzaTopping"/>
</ObjectPropertyRange>
</Ontology>
此示例是标准猫头鹰教程的一部分,请参见此处。显然,该教程有点不一致。
声明VegetableTopping
为Disjoint With
MeatTopping
解决了问题。