如何查询owl:equivalentclass的隐式属性

时间:2019-08-19 09:57:20

标签: sparql virtuoso openlink-virtuoso

我想查询一个包含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中执行此操作。

1 个答案:

答案 0 :(得分:0)

Virtuoso提供两种形式的推理和推理。 1.内置-基于固定规则,涉及owl:equivalentClass,owl:equivalentProperty,owl:inverseOf,owl:sameAs,owl:InverseFunctionalProperty,owl:SymmetricProperty,rdfs:subClassOf,rdfs:subPropertyOf(开源版和商业版均支持此功能

  1. 自定义-基于使用SPARQL和规则语言制定的自定义规则,并受SPIN本体(仅商业版功能)的条款的礼貌。

您现在出现只是需要owl:equivalentClass推理,因此您可以查看以下内置的推理和推理示例:

启用等效类推理

DEFINE input:inference 'urn:owl:equivalent:class:inference:rules'

PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX bmo: <http://purl.org/bmo/ns#> 
PREFIX fibo: <https://spec.edmcouncil.org/fibo/ontology/FND/AgentsAndPeople/People/Person>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>


SELECT DISTINCT ?s
WHERE {
        ?s a fibo:person .

      }
LIMIT 20

Live Query Results Page(解决方案是基于推理和推论的结果产生的)

等效类推理已禁用(注意DEFINE输入:推理编译注释已被注释掉)

# DEFINE input:inference 'urn:owl:equivalent:class:inference:rules'

PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX bmo: <http://purl.org/bmo/ns#> 
PREFIX fibo: <https://spec.edmcouncil.org/fibo/ontology/FND/AgentsAndPeople/People/Person>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>


SELECT DISTINCT ?s
WHERE {
        ?s a fibo:person .

      }
LIMIT 20

Live Query Results Page(应该为空)

Example source code document来自我们的Github Repository