Rdf 用数值数据表达式定义Protege类
我正在构建一个智能家居本体。我现在有了这样的类层次结构: 我想给“RoomStatus”的子类下定义。例如,我想定义当室温在18-22摄氏度范围内,湿度在40-50%范围内时,房间处于温和状态。我尝试在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的子类(正如我在编辑器中看到的那样) 您必须定义两个数据属
提前谢谢 您可以使用Protege的class expression editor完成此操作,但需要遵循以下步骤:
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有意义吗