【问题标题】:OWL reasoning based on subset of relationships基于关系子集的 OWL 推理
【发布时间】:2020-11-25 00:08:51
【问题描述】:

我有以下 Brick.ttl 建筑物本体的示例实例

@prefix : <https://example.org/ontologies/test#> .
@prefix brick: <https://brickschema.org/schema/1.1/Brick#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

:CH1_Active_Power_Sensor a owl:NamedIndividual,
    brick:Active_Power_Sensor ;
    brick:isPointOf :CH1 .

:CH1_Chilled_Water_Entering_Temperature_Sensor a owl:NamedIndividual,
    brick:Chilled_Water_Entering_Temperature_Sensor ;
    brick:isPointOf :CH1 .

:CH1_Chilled_Water_Leaving_Temperature_Sensor a owl:NamedIndividual,
    brick:Chilled_Water_Leaving_Temperature_Sensor ;
    brick:isPointOf :CH1 .

:CH2_Active_Power_Sensor a owl:NamedIndividual,
    brick:Active_Power_Sensor ;
    brick:isPointOf :CH2 .

:CH2_Chilled_Water_Leaving_Temperature_Sensor a owl:NamedIndividual,
    brick:Chilled_Water_Leaving_Temperature_Sensor ;
    brick:isPointOf :CH2 .

:CH3_Chilled_Water_Entering_Temperature_Sensor a owl:NamedIndividual,
    brick:Chilled_Water_Entering_Temperature_Sensor ;
    brick:isPointOf :CH3 .

:CH3_Chilled_Water_Leaving_Temperature_Sensor a owl:NamedIndividual,
    brick:Chilled_Water_Leaving_Temperature_Sensor ;
    brick:isPointOf :CH3 .


:CH1 a owl:NamedIndividual, brick:Chiller ;
    brick:hasPoint :CH1_Active_Power_Sensor ;
    brick:hasPoint :CH1_Chilled_Water_Entering_Temperature_Sensor ;
    brick:hasPoint :CH1_Chilled_Water_Leaving_Temperature_Sensor .

:CH2 a owl:NamedIndividual, brick:Chiller ;
    brick:hasPoint :CH2_Active_Power_Sensor ;
    brick:hasPoint :CH2_Chilled_Water_Leaving_Temperature_Sensor .

:CH3 a owl:NamedIndividual, brick:Chiller ;
    brick:hasPoint :CH3_Chilled_Water_Entering_Temperature_Sensor ;
    brick:hasPoint :CH3_Chilled_Water_Leaving_Temperature_Sensor .

我需要识别具有一组点的实例,即所有砖块:冷却器,其中所有成员来自 {brick:Chilled_Water_Entering_Temperature_Sensor,brick:Chilled_Water_Leaving_Temperature_Sensor}(以及任何其他)。

使用 SPARQL 很容易,即

SELECT ?subject WHERE {
    ?subject brick:hasPoint ?p1 .
    ?p1 rdf:type/rdfs:subClassOf* brick:Chilled_Water_Entering_Temperature_Sensor .
    ?subject brick:hasPoint ?p2 .
    ?p2 rdf:type/rdfs:subClassOf* brick:Chilled_Water_Leaving_Temperature_Sensor .
    }

但是我有很多这样的组合,我希望我能以这样一种方式定义它们,以便可以推断 :CH1 和 :CH3 是一个特定的子类型,因此我可以直接查询它。到目前为止,我的尝试是:

:CHWETLT a owl:Class ;
    owl:equivalentClass [ 
        a owl:Restriction ;
        owl:onProperty :hasPoint ;
        owl:allValuesFrom [
            a owl:Class ;
            owl:intersectionOf (
                brick:Chilled_Water_Entering_Temperature_Sensor
                brick:Chilled_Water_Leaving_Temperature_Sensor
            )
        ]
    ] .

我希望推理能够确定 :CH1 和 :CH3 属于 :CHWETLT,因此我可以直接查询。不过,这似乎不起作用-我不确定从现在开始要去哪里。这可能吗?如果是这样,有人可以指出我正确的方向吗?

我正在使用brickschema python 包,它(afaik)基于rdflib 构建,并使用reasonable 作为推理器。

【问题讨论】:

标签: owl ontology reasoning


【解决方案1】:

在曼彻斯特语法中,而不是

hasPoint only (Chilled_Water_Entering_Temperature_Sensor Chilled_Water_Leaving_Temperature_Sensor )

你更需要

( hasPoint some Chilled_Water_Entering_Temperature_Sensor ) ( hasPoint some Chilled_Water_Leaving_Temperature_Sensor )

回到 Turtle 语法:

:CHWETLT a owl:Class ;
    owl:equivalentClass [
        a owl:Class ;
        owl:intersectionOf (
            [ a owl:Restriction ;
              owl:onProperty brick:hasPoint ;
              owl:someValuesFrom brick:Chilled_Water_Entering_Temperature_Sensor
            ]
            [ a owl:Restriction ;
              owl:onProperty brick:hasPoint ;
              owl:someValuesFrom brick:Chilled_Water_Leaving_Temperature_Sensor
            ]
        ) 
    ] .

严格来说,这个公理在OWL 2 RL之外。但是,您的推理所需要的只是从左到右的包含。为什么选择猫头鹰 2 RL?我想,文档中的owlrl Python 推理器mentioned 只支持这个OWL 配置文件。

【讨论】:

    猜你喜欢
    • 2018-03-18
    • 1970-01-01
    • 2011-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-25
    相关资源
    最近更新 更多