猫头鹰本体论:如何编写补充类定义



推理器未能在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>

此示例是标准猫头鹰教程的一部分,请参见此处。显然,该教程有点不一致。

声明VegetableToppingDisjoint With MeatTopping解决了问题。

相关内容

  • 没有找到相关文章

最新更新