Inheritance 本体对象属性继承
我使用Protege 5.2.0开发了一个关于胸部疾病的阿拉伯语本体,该本体有一个类Inheritance 本体对象属性继承,inheritance,ontology,protege,object-properties,Inheritance,Ontology,Protege,Object Properties,我使用Protege 5.2.0开发了一个关于胸部疾病的阿拉伯语本体,该本体有一个类疾病和一个类症状。前两个类之间的对象属性是具有症状,其域是疾病,范围是症状。现在我有了一个类疾病的子类,它是结核病现在我可以查询本体以获取类Tuberculosis和类Symptom之间的对象属性,请参见以下查询: 前缀rdfs: 前缀“我的”: 选择?属性 在哪里{ ?属性rdfs:域my:结核病; rdfs:范围:我的症状。 } 我是否应该获得与疾病类(结核病的超类)和症状类相同的属性?换句话说,是由其域和范
疾病
和一个类症状
。前两个类之间的对象属性是具有症状
,其域是疾病
,范围是症状
。现在我有了一个类疾病
的子类,它是结核病
现在我可以查询本体以获取类
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推理机。例如,如果您的类层次结构包含任何并集或交集公理,那么上述查询将不足以“智能”遵循它们