如何在“DOID”本体中查询兄弟类?

时间:2017-05-05 23:40:35

标签: sparql semantic-web ontology

我正在使用ontobee执行查询以获取人类疾病本体“DOID”中所有兄弟姐妹的“基本高血压”,查询返回5个三元组。

prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
prefix owl: <http://www.w3.org/2002/07/owl#> 
SELECT ?xChild Str(?xChildLa)
from <http://purl.obolibrary.org/obo/merged/DOID>
WHERE { 
         <http://purl.obolibrary.org/obo/DOID_10825> rdfs:subClassOf ?x.
         ?xChild  rdfs:subClassOf|(owl:equivalentClass)* ?x ;
                 rdfs:label ?xChildLa.

}

the page of "essential Hypertension"在类层次结构中显示,查询未返回另外一个兄弟。

上述查询有什么问题? 为什么“肾性高血压”没有回来?

1 个答案:

答案 0 :(得分:1)

如果您点击description of renal hypertension,您会看到

renal hypertension EquivalentTo hypertension and (located in some kidney)

这意味着它正在使用OWL类等价公理(owl:equivalentClass)。这是两个方向上rdfs:subClassOf关系的语法糖,实际上你的SPARQL查询在语法和语义上都没有处理这个公理。

不确定他们是否使用OWL推理器来获取可视化的所有子类。

可以在great answer from Joshua Taylor

中找到通过SPARQL进行的操作