Protege看到了关系,Virtuoso没有

时间:2016-08-05 13:12:41

标签: sparql rdf owl protege virtuoso

在新安装的库存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 

n3http://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
}

2 个答案:

答案 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 Schemardfs:subClassOfrdfs:subPropertyOfrdfs:subClassOf)或{{ 3}}(owl:equivalentPropertyowl:equivalentClassowl:SymmetricPropertyowl:inverseOf等等,然后您可以利用推理规则编译指示,如@MarkMiller的评论中所述(注意对OWL的引用)。

如果您想编写自定义推理规则(即blog post about that usage pattern),那么您将需要Virtuoso 8.0(即将推出)来提供该功能。请注意,这是最终的解决方案,因为您可以使用SPARQL编写自己的算法。