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。屏幕截图与上面发送的最小示例不一致,但选中此框将使最小示例也能正常工作。
我面临的问题是推理者(例如 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。屏幕截图与上面发送的最小示例不一致,但选中此框将使最小示例也能正常工作。