OWL本体论:不能将个人推断为在其类表达式中使用Data属性的类的成员

时间:2019-02-18 16:09:24

标签: owl ontology protege

我面临的问题是,推理者(例如Pellet)不会将个人归类为使用数据属性限制进行定义的类。

我在蛋白质5中创建了一个最小的OWL本体示例(基于著名的披萨示例)来说明此问题。

共有三类:MarghartiaPizza,LowCaloriePizza,HighCaloriePizza。有一个hasCalorificContentValue数据属性。 MarghartiaPizza类的两个个体为ExampleMarghartiaPizza和QuattroFormaggio,其hasCalorificContentValue分别为263和723。

HighCaloriePizza和LowCaloriePizza类被定义为分别具有has = CalorificContentValue和> = 400的值。

问题是,为什么推理者不根据其值推断两个人属于HighCaloriePizza和LowCaloriePizza类?

High / LowCaloriePizza或hasCalorificContentValue中的类表达式的语法有问题吗?

您应该能够将代码复制/粘贴到文件中,使用protege 5打开它,然后尝试运行Pellet推理程序。

<?xml version="1.0"?>
<Ontology xmlns="http://www.w3.org/2002/07/owl#"
 xml:base="http://www.pizza.com/ontologies/pizza.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.owl"
 versionIRI="http://www.pizza.com/ontologies/pizza.owl/v1.0">
<Prefix name="" IRI="http://www.pizza.com/ontologies/pizza.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>
    <Class IRI="#HighCaloriePizza"/>
</Declaration>
<Declaration>
    <Class IRI="#LowCaloriePizza"/>
</Declaration>
<Declaration>
    <Class IRI="#MargheritaPizza"/>
</Declaration>
<Declaration>
    <DataProperty IRI="#hasCalorificContentValue"/>
</Declaration>
<Declaration>
    <NamedIndividual IRI="#ExampleMargherita"/>
</Declaration>
<Declaration>
    <NamedIndividual IRI="#QuattroFormaggio"/>
</Declaration>
<EquivalentClasses>
    <Class IRI="#HighCaloriePizza"/>
    <DataSomeValuesFrom>
        <DataProperty IRI="#hasCalorificContentValue"/>
        <DatatypeRestriction>
            <Datatype abbreviatedIRI="xsd:integer"/>
            <FacetRestriction facet="http://www.w3.org/2001/XMLSchema#minInclusive">
                <Literal datatypeIRI="http://www.w3.org/2001/XMLSchema#integer">400</Literal>
            </FacetRestriction>
        </DatatypeRestriction>
    </DataSomeValuesFrom>
</EquivalentClasses>
<EquivalentClasses>
    <Class IRI="#LowCaloriePizza"/>
    <DataSomeValuesFrom>
        <DataProperty IRI="#hasCalorificContentValue"/>
        <DatatypeRestriction>
            <Datatype abbreviatedIRI="xsd:integer"/>
            <FacetRestriction facet="http://www.w3.org/2001/XMLSchema#maxExclusive">
                <Literal datatypeIRI="http://www.w3.org/2001/XMLSchema#integer">400</Literal>
            </FacetRestriction>
        </DatatypeRestriction>
    </DataSomeValuesFrom>
</EquivalentClasses>
<ClassAssertion>
    <Class IRI="#MargheritaPizza"/>
    <NamedIndividual IRI="#ExampleMargherita"/>
</ClassAssertion>
<ClassAssertion>
    <Class IRI="#MargheritaPizza"/>
    <NamedIndividual IRI="#QuattroFormaggio"/>
</ClassAssertion>
<DataPropertyAssertion>
    <DataProperty IRI="#hasCalorificContentValue"/>
    <NamedIndividual IRI="#ExampleMargherita"/>
    <Literal datatypeIRI="http://www.w3.org/2001/XMLSchema#integer">263</Literal>
</DataPropertyAssertion>
<DataPropertyAssertion>
    <DataProperty IRI="#hasCalorificContentValue"/>
    <NamedIndividual IRI="#QuattroFormaggio"/>
    <Literal datatypeIRI="http://www.w3.org/2001/XMLSchema#integer">723</Literal>
</DataPropertyAssertion>
<FunctionalDataProperty>
    <DataProperty IRI="#hasCalorificContentValue"/>
</FunctionalDataProperty>
</Ontology>

这是Pellet运行时protege应用程序的屏幕截图。如您所见,选择了HighCaloriePizza,但“实例”下没有QuattroFormaggio。

enter image description here

1 个答案:

答案 0 :(得分:0)

确保选中了右下角的“显示推断”复选框!

P.S。屏幕截图与上面发送的最小示例不符,但是选中此复选框也可以使最小示例正常工作。

enter image description here