当前位置: 首页 > 知识库问答 >
问题:

OWL本体:个体不被推断为在其类表达式中使用数据属性的类的成员

孟鹏海
2023-03-14

我面临的问题是,推理器(例如Pellet)没有将个体分类到其定义使用数据属性限制的类中。

我已经在Protege5中创建了一个最小的OWL本体示例(基于著名的pizza示例)来说明这个问题。

有三种类型:MarghartiaPizza,LowCaloriePizza,highcaloriepizza。有一个hasCalorificContentValue数据属性。MarghartiaPizza类有两个个体,ExampleMarghartiaPizza和QuattroFormaggio,其HasCalorificContentValue值分别为263和723。

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

您应该能够将代码复制/粘贴到一个文件中,用Protege5打开它,并尝试运行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被选中,但QuattroFormaggio在'instances'下不存在。

共有1个答案

柯国安
2023-03-14

确保右下方的“显示推论”复选框被选中!

附注。屏幕截图与上面发送的最小示例不一致,但选中该框将使最小示例也工作。

 类似资料:
  • decltype(E)是一个标识符或者表达式的推断数据类型(“declared type”),它可以用在变量声明中作为变量的数据类型。例如: void f(const vector<int>& a, vector<float>& b) { // 推断表达式a[0]*b[0]的数据类型,并将其定义为Temp类型 typedef decltype(a[0]*b[0]) Tmp;

  • 我需要在Protégé中实现一个OWL-ontology,它包含两个类:和,这两个类都是类的实例。这两个类由连接类连接,该连接类包含属性。该财产必须根据下列法律取值: 欧米茄=1*S1。完成 我如何在Protégé中实现它,这样我就可以在将来的SWRL-rule中使用它了?

  • 我刚刚开始使用OWL API,以便生成一些使用其他本体的示例。情况是这样的:我有两个本体A和B,它们有很多元素,从其他本体导入。这两个本体是一个标准的一部分,因此它们是密切相关的。我需要生成一个标准的元素示例,它涉及导入这两个本体,并使用和组合来自这两个本体的类和元素,但我不知道如何开始。我尝试过使用API,但我唯一实现的是加载一个本体,获取一些类和属性,并将它们组合成一个新的本体。我也不知道如何

  • 谢谢你的帮助。 克里斯

  • 如果我对本体中“class1”的所有实例都有相同的对象属性值“val1”,我如何推断该“class1”的对象属性值为“val1”

  • 问候Ignazio Palmisano教授, 我有一个关于OWL-APIV5的问题 我添加了一个新的单独的“x”作为Thing的子类,并添加了单独的属性。 初始化reasoner和precomputeInferences() 目标: 子问题: 2)我是否必须保存新的推断本体,然后按照断言处理它,以便检索那个类?我不喜欢这样做,因为我的兴趣只是用推断的超类替换当前的单个超类。 我试图找到如何做到这一