Rdf 用数值数据表达式定义Protege类

Rdf 用数值数据表达式定义Protege类,rdf,jena,semantic-web,owl,ontology,Rdf,Jena,Semantic Web,Owl,Ontology,我正在构建一个智能家居本体。我现在有了这样的类层次结构: 我想给“RoomStatus”的子类下定义。例如,我想定义当室温在18-22摄氏度范围内,湿度在40-50%范围内时,房间处于温和状态。我尝试在Protege中使用类表达式编辑器,但它不起作用 我如何实现这个定义? 提前谢谢 您可以使用Protege的class expression editor完成此操作,但需要遵循以下步骤: 您创建了#轻度#状态并将其作为#RoomStatus的子类(正如我在编辑器中看到的那样) 您必须定义两个数据属

我正在构建一个智能家居本体。我现在有了这样的类层次结构:

我想给“RoomStatus”的子类下定义。例如,我想定义当室温在18-22摄氏度范围内,湿度在40-50%范围内时,房间处于温和状态。我尝试在Protege中使用类表达式编辑器,但它不起作用

我如何实现这个定义?
提前谢谢

您可以使用Protege的class expression editor完成此操作,但需要遵循以下步骤:

  • 您创建了#轻度#状态并将其作为#RoomStatus的子类(正如我在编辑器中看到的那样)

  • 您必须定义两个数据属性(#摄氏度和#湿度)的域和范围,例如,将类#RoomStatus作为域,将xml数据类型integer作为范围。所有这些都可以通过Protege来完成

  • 最后,使用类表达式编辑器:您必须断言#轻度#状态等同于:

    RoomStatus
     and (centigrade some integer[> 18])
     and (centigrade some integer[< 22])
     and (humidity some integer[> 40])
     and (humidity some integer[<50])
    
    RoomStatus
    和(摄氏度某个整数[>18])
    和(摄氏度某个整数[<22])
    和(湿度为某个整数[>40])
    和(某个整数)[可能对你有用,但我认为在你不需要的时候最好不要使用同等的等级公理,并避免将温和的状态与特定的温度和湿度联系起来。毕竟,房间拥有温和状态的含义与桑拿拥有温和状态的含义大不相同

    我建议使用一般的类公理来表示:

    如果房间的温度和湿度在规定范围内,房间处于温和状态

    作为一个阶级公理,这是:

    房间(哈氏温度部分整数[&geq;18,&leq;22])(哈氏湿度部分整数[&geq;40,&leq;50])(哈氏温度轻度状态)

    这几乎就是你可以在Protege中写的内容:

    以下是带有该公理的本体(RDF/XML和TTL):

    @前缀:。
    @前缀rdfs:。
    @前缀owl:。
    @前缀xsd:。
    @前缀rdf:。
    :猫头鹰:本体论。
    :a房间猫头鹰:上课。
    :状态a猫头鹰:类。
    :轻度\状态猫头鹰:名称个人,:状态。
    :hasStatus a owl:ObjectProperty。
    :hasTemperature a owl:DatatypeProperty。
    :hasHumidity a owl:DatatypeProperty。
    [猫头鹰:班级;
    rdfs:子类[a owl:限制;
    猫头鹰:hasValue:轻度_状态;
    猫头鹰:onProperty:hasStatus
    ] ;
    owl:intersectionOf(:Room:b2:b3)
    ] .
    _:b3 a猫头鹰:限制;
    owl:onProperty:HasteTemperature;
    owl:someValuesFrom[a rdfs:Datatype;
    owl:onDatatype xsd:integer;
    owl:有限制(10;:b0_10;:b4)
    ] .
    _:b0 xsd:minInclusive 18。
    _:b4 xsd:max22。
    _:b2 a猫头鹰:限制;
    owl:onProperty:hasHumidity;
    owl:someValuesFrom[a rdfs:Datatype;
    owl:onDatatype xsd:integer;
    猫头鹰:有限制(u5:b1)
    ] .
    _:b1 xsd:minInclusive 40。
    _:b5 xsd:max50。
    
    
    50
    40
    18
    22
    
    谢谢!似乎只有当
    RoomStatus
    摄氏度
    湿度
    的范围时,我们才能像你所说的那样写。但是这三个字母看起来很奇怪。在我看来,我认为当
    房间hasSensor温度传感器
    时,
    房间hasSensor湿度传感器
    温度传感器更合理eratureSensor具有摄氏度整数>18和整数40和整数注意,如果目的是捕捉“如果室温在范围内…则房间处于温和状态”,则子类公理,而不是等价类公理可能更合适。我同意@JoshuaTaylor,我使用了类等价公理,这在您的案例中不合适:)我仍然有点担心在米尔斯状态上设置这么多明确的条件。通过将米尔斯状态与房间状态、温度和湿度联系起来,你就失去了谈论米尔斯状态的能力,例如天气。我宁愿(并补充)说“具有特定属性的房间”是“具有米尔斯状态的房间”的一个子类这样,如果一个房间有条件,那么它也有温和的状态。很好的设计!在这种情况下,
    温和的状态
    是一个个体,是
    状态
    的成员。我们可以将这两种状态描述为“温和的状态”.所以有一个重要的问题,我们什么时候应该使用
    成员
    ,什么时候应该使用
    子类
    来构建本体?谢谢!@Ev3rlasting这是一个相当普遍的问题,没有普遍的答案。在这种情况下,我认为作为一个类拥有身份是有意义的,有一些身份个体,比如温和的、极端的,e另一种选择是将MildStatus、ExtremeStatus等作为状态的子类,但是你必须问“个体会是什么样的人”?使用MildStatus有意义吗