Inheritance 本体对象属性继承

Inheritance 本体对象属性继承,inheritance,ontology,protege,object-properties,Inheritance,Ontology,Protege,Object Properties,我使用Protege 5.2.0开发了一个关于胸部疾病的阿拉伯语本体,该本体有一个类疾病和一个类症状。前两个类之间的对象属性是具有症状,其域是疾病,范围是症状。现在我有了一个类疾病的子类,它是结核病现在我可以查询本体以获取类Tuberculosis和类Symptom之间的对象属性,请参见以下查询: 前缀rdfs: 前缀“我的”: 选择?属性 在哪里{ ?属性rdfs:域my:结核病; rdfs:范围:我的症状。 } 我是否应该获得与疾病类(结核病的超类)和症状类相同的属性?换句话说,是由其域和范

我使用Protege 5.2.0开发了一个关于胸部疾病的阿拉伯语本体,该本体有一个类
疾病
和一个类
症状
。前两个类之间的对象属性是
具有症状
,其域是
疾病
,范围是
症状
。现在我有了一个类
疾病
的子类,它是
结核病

现在我可以查询本体以获取类
Tuberculosis
和类
Symptom
之间的对象属性,请参见以下查询:

前缀rdfs:
前缀“我的”:
选择?属性
在哪里{
?属性rdfs:域my:结核病;
rdfs:范围:我的症状。
}


我是否应该获得与
疾病
类(结核病的超类)和
症状
类相同的属性?换句话说,是由其域和范围的子类继承的对象属性。
我感谢您提供的任何帮助。

不,在您的数据集中引入
my:Tuberculosis rdfs:subassof my:Disease
公理并不意味着
my:has_症状rdfs:domain my:Tuberculosis

 PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
 PREFIX my: <http://www.semanticweb.org/ali/ontologies/2017/2/CDDOnto#>
 SELECT ?property
 WHERE {
    ?property rdfs:domain/(rdfs:subClassOf^)* my:Tuberculosis ;
              rdfs:range my:Symptom .
 } 
您可以通过查找
my:Tuberculosis
是属性域的子类的属性来查询属性。以下查询应检索其域是
my:Tuberculosis
的超类的属性

 PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
 PREFIX my: <http://www.semanticweb.org/ali/ontologies/2017/2/CDDOnto#>
 SELECT ?property
 WHERE {
    ?property rdfs:domain/(rdfs:subClassOf^)* my:Tuberculosis ;
              rdfs:range my:Symptom .
 } 
前缀rdfs:
前缀“我的”:
选择?属性
在哪里{
?地产rdfs:领域/(rdfs:子类^)*我的:结核病;
rdfs:范围:我的症状。
} 
根据您如何定义本体(即:您是否使用了owl公理?),您最好使用owl推理机。例如,如果您的类层次结构包含任何并集或交集公理,那么上述查询将不足以“智能”遵循它们