我正在使用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"在类层次结构中显示,查询未返回另外一个兄弟。
上述查询有什么问题? 为什么“肾性高血压”没有回来?
答案 0 :(得分:1)
如果您点击description of renal hypertension,您会看到
renal hypertension EquivalentTo hypertension and (located in some kidney)
这意味着它正在使用OWL类等价公理(owl:equivalentClass
)。这是两个方向上rdfs:subClassOf
关系的语法糖,实际上你的SPARQL查询在语法和语义上都没有处理这个公理。
不确定他们是否使用OWL推理器来获取可视化的所有子类。
中找到通过SPARQL进行的操作