我想查询一个包含owl:equivalentclass
对象所拥有的隐式属性的本体。我怎样才能做到这一点?
本体包含这样的三元组:
<plantURI> rdf:type <http://purl.obolibrary.org/obo/FLOPO_0004148>
.
该类<http://purl.obolibrary.org/obo/FLOPO_0004148>
具有以下定义:
<owl:Class rdf:about="http://purl.obolibrary.org/obo/FLOPO_0004148">
<owl:equivalentClass>
<owl:Restriction>
<owl:onProperty rdf:resource="http://purl.obolibrary.org/obo/BFO_0000051"/>
<owl:someValuesFrom>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<rdf:Description rdf:about="http://purl.obolibrary.org/obo/PO_0009046"/>
<owl:Restriction>
<owl:onProperty rdf:resource="http://purl.obolibrary.org/obo/RO_0000053"/>
<owl:someValuesFrom rdf:resource="http://purl.obolibrary.org/obo/PATO_0000320"/>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</owl:someValuesFrom>
</owl:Restriction>
</owl:equivalentClass>
<rdfs:label rdf:datatype="http://www.w3.org/2001/XMLSchema#string">flower green</rdfs:label>
</owl:Class>
但是,我不想像这样简单地查询 URI:
SELECT * {
?s rdf:type <http://purl.obolibrary.org/obo/FLOPO_0004148>
}
但我有时只想查询其隐含属性之一,例如属性<http://purl.obolibrary.org/obo/PATO_0000320>
(“绿色”) - 搜索所有以任何方式为绿色的植物。
所以,最好的查询应该是这样的:
SELECT * {
?s ?p <http://purl.obolibrary.org/obo/PATO_0000320>
}
这给了我对象,因为对象隐含地拥有这个属性。
这可能涉及到 Virtuoso 中的推理。但是,几个小时后,我无法想出如何在 SPARQL 中执行此操作的任何解决方案。