OWL Ontology:个人未被推断为 class 的成员,在其 class 表达式中使用数据 属性

OWL Ontology: Individuals are not inferred as members of classes that use Data property in their class expression

我面临的问题是推理者(例如 Pellet)不会将个人分类到 class 中,其定义使用数据 属性 限制。

我在 protege 5 中创建了一个最小的 OWL ontology 示例(基于著名的披萨示例)来说明这个问题。

共有三种 classes:MarghartiaPizza、LowCaloriePizza、HighCaloriePizza。有一个 hasCalorificContentValue 数据 属性。 MarghartiaPizza有两个个体class,ExampleMarghartiaPizza和QuattroFormaggio,它们的hasCalorificContentValue分别有263和723的值。

HighCaloriePizza 和 LowCaloriePizza classes 被定义为具有 >=400 和 <400 的 hasCalorificContentValue 值。

问题是,推理机为什么不根据他们的值推断出这两个人属于 HighCaloriePizza 和 LowCaloriePizza classes?

我在 High/LowCaloriePizza 或 hasCalorificContentValue 中的 class 表达式的语法有什么问题吗?

您应该能够 copy/paste 将代码放入文件中,用 protege 5 打开它,然后尝试 运行 Pellet reasoner。

<?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,但 'instances'.

下不存在 QuattroFormaggio

确保选中右下角的 "Show Inferences" 复选框!

P.S。屏幕截图与上面发送的最小示例不一致,但选中此框将使最小示例也能正常工作。