Protege 看到关系,Virtuoso 没有
Protege sees relationship, Virtuoso doesn't
正在查看 go-plus ontology in a freshly installed, stock Protégé 5, I found a useful inference in the entities tab for http://purl.obolibrary.org/obo/GO_0003215:
'cardiac right ventricle morphogenesis' 'results in morphogenesis of'一些'cardiac ventricle'
'results in morphogenesis of' 在这种情况下是 http://purl.obolibrary.org/obo/RO_0002298 and 'cardiac ventricle' is http://purl.obolibrary.org/obo/UBERON_0002082
如果我将相同的 ontology 加载到 Virtuoso Open Source 07.20.3217 并描述 http://purl.obolibrary.org/obo/GO_0003215, no relationship with 'cardiac ventricle' is listed. (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
}
如何在 Virtuoso 中启用 OWL 推理?你应该知道它不支持OWL DL推理,只支持某种基于规则的推理,只涵盖OWL DL的一小部分。另一方面,Protege 通过 HermiT、Pellet 等推理机支持 OWL 深度学习推理
如果您的意思是 "enable OWL inference" 只是在 rdfs:subClassOf
关系上使用 SPARQL 1.1 proeprty 路径,那么这与 OWL DL 推理相去甚远。它只是意味着从图中的起始节点考虑该关系的传递闭包,仅此而已。
这里有很多事情要做。
您可以使用 属性 路径进行传递,如@ASKW 的评论中所述。
如果您想利用 Virtuoso 的 built-in reasoning for relationship types described by RDF Schema (rdfs:subClassOf
, rdfs:subPropertyOf
, rdfs:subClassOf
) or OWL (owl:equivalentProperty
, owl:equivalentClass
, owl:SymmetricProperty
, owl:inverseOf
, etc.), then you can leverage the inference rules pragma as described in @MarkMiller's comments (note reference to a blog post about that usage pattern)。
如果您想编写自定义推理规则(即 use SPARQL as your Inference Rules language),那么您将需要提供该功能的 Virtuoso 8.0(即将推出)。请注意,这是最终的解决方案,因为您可以使用 SPARQL 编写自己的算法。
正在查看 go-plus ontology in a freshly installed, stock Protégé 5, I found a useful inference in the entities tab for http://purl.obolibrary.org/obo/GO_0003215:
'cardiac right ventricle morphogenesis' 'results in morphogenesis of'一些'cardiac ventricle'
'results in morphogenesis of' 在这种情况下是 http://purl.obolibrary.org/obo/RO_0002298 and 'cardiac ventricle' is http://purl.obolibrary.org/obo/UBERON_0002082
如果我将相同的 ontology 加载到 Virtuoso Open Source 07.20.3217 并描述 http://purl.obolibrary.org/obo/GO_0003215, no relationship with 'cardiac ventricle' is listed. (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
}
如何在 Virtuoso 中启用 OWL 推理?你应该知道它不支持OWL DL推理,只支持某种基于规则的推理,只涵盖OWL DL的一小部分。另一方面,Protege 通过 HermiT、Pellet 等推理机支持 OWL 深度学习推理
如果您的意思是 "enable OWL inference" 只是在 rdfs:subClassOf
关系上使用 SPARQL 1.1 proeprty 路径,那么这与 OWL DL 推理相去甚远。它只是意味着从图中的起始节点考虑该关系的传递闭包,仅此而已。
这里有很多事情要做。
您可以使用 属性 路径进行传递,如@ASKW 的评论中所述。
如果您想利用 Virtuoso 的 built-in reasoning for relationship types described by RDF Schema (rdfs:subClassOf
, rdfs:subPropertyOf
, rdfs:subClassOf
) or OWL (owl:equivalentProperty
, owl:equivalentClass
, owl:SymmetricProperty
, owl:inverseOf
, etc.), then you can leverage the inference rules pragma as described in @MarkMiller's comments (note reference to a blog post about that usage pattern)。
如果您想编写自定义推理规则(即 use SPARQL as your Inference Rules language),那么您将需要提供该功能的 Virtuoso 8.0(即将推出)。请注意,这是最终的解决方案,因为您可以使用 SPARQL 编写自己的算法。