0

我想查询一个包含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 中执行此操作的任何解决方案。

4

1 回答 1

0

Virtuoso 以两种形式提供推理和推理。(这在开源和商业版本中都受支持)

  1. 自定义——这是基于使用 SPARQL 和规则语言制作的自定义规则,由 SPIN Ontology 中的条款提供(这是商业版独有的功能)。

您现在似乎只需要 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

实时查询结果页面(根据推理和推理的效果产生解决方案)

Equivalent Class Reasoning Disabled(注意 DEFINE input:inference pragma 已注释掉)

# 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

实时查询结果页面(应为空)

来自我们的Github 存储库的示例源代码文档

于 2019-08-27T15:17:44.233 回答