在新安装的库存Protégé5中查看go-plus ontology,我在http://purl.obolibrary.org/obo/GO_0003215的实体标签中找到了一个有用的推断:
'心脏右心室形态发生'导致'某些'心室的形态发生'
'导致'的形态发生在这种情况下是http://purl.obolibrary.org/obo/RO_0002298而'心室'是http://purl.obolibrary.org/obo/UBERON_0002082
如果我将相同的本体加载到Virtuoso Open Source 07.20.3217中并描述http://purl.obolibrary.org/obo/GO_0003215,则不会列出与“心室”的关系。 (Even after enabling OWL inference.)
但是,http://purl.obolibrary.org/obo/GO_0003215 与
的匿名节点相关联rdf:type owl:Restriction
owl:onProperty n3:RO_0002298
owl:someValuesFrom n3:UBERON_0002080
n3
为http://purl.obolibrary.org/obo/
是否有Virtuoso配置可以在describe
视图中清除此关系?
是否有一些简洁的SPARQL语法可以使关系清晰?目前,我正在使用
select distinct ?goid (str(?goterm) as ?go_str)
?svf (str(?anatomy ) as ?anat_str)
where
{
?goid obo:hasOBONamespace 'biological_process'^^xsd:string .
?goid rdfs:label ?goterm .
?goid rdfs:subClassOf+ ?parent .
?parent owl:someValuesFrom* ?svf .
?svf rdfs:subClassOf+
<http://purl.obolibrary.org/obo/UBERON_0001062> .
?svf rdfs:label ?anatomy
}
答案 0 :(得分:2)
如何在Virtuoso中启用OWL推理?您应该知道它不支持OWL DL推理,而只支持某种基于规则的推理,它只覆盖OWL DL的一小部分。另一方面,Protege通过像HermiT,Pellet等的reasoners支持OWL DL推理。
如果你的意思是“启用OWL推理”只是在rdfs:subClassOf
关系上使用SPARQL 1.1 proeprty路径,那么这远非OWL DL推理。它只是意味着从图中的起始节点开始考虑该关系的传递闭包,仅此而已,并没有更多的魔力。
答案 1 :(得分:2)
这里有很多东西在玩。
您可以使用属性路径进行传递,如@ASKW的评论中所述。
如果您想将Virtuoso的built-in reasoning用于RDF Schema(rdfs:subClassOf
,rdfs:subPropertyOf
,rdfs:subClassOf
)或{{ 3}}(owl:equivalentProperty
,owl:equivalentClass
,owl:SymmetricProperty
,owl:inverseOf
等等,然后您可以利用推理规则编译指示,如@MarkMiller的评论中所述(注意对OWL的引用)。
如果您想编写自定义推理规则(即blog post about that usage pattern),那么您将需要Virtuoso 8.0(即将推出)来提供该功能。请注意,这是最终的解决方案,因为您可以使用SPARQL编写自己的算法。