我面临的问题是,推理器(例如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'下不存在。
确保右下方的“显示推论”复选框被选中!
附注。屏幕截图与上面发送的最小示例不一致,但选中该框将使最小示例也工作。
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)我是否必须保存新的推断本体,然后按照断言处理它,以便检索那个类?我不喜欢这样做,因为我的兴趣只是用推断的超类替换当前的单个超类。 我试图找到如何做到这一