我面临的问题是,推理者(例如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。