0

我想在 Protégé 中对类表达式语法使用双精度值,但我找不到任何示例。所有人都使用整数值,而不是双精度值。例如: http: //protegeproject.github.io/protege/class-expression-syntax/

例如,我想用米来表示一个人的身高:

  • hasHeight 值 1.89
  • hasHeight min 1.70

我怎样才能做到这一点?

当前有效的方法(根据语法):“hasHeight some xsd:double”推断在属性 hasHeight 中具有 xsd:double 值的所有实例都是实例。但是,我想将其限制在特定的值范围内。例如:在 1.80 和 1.70 之间。我怎样才能做到这一点?

我认为这相当于来自 DL Query 选项卡的查询,在该选项卡中我可以使用“hasHeight some xsd:double[<=1.80]”查询相关实例,但这在 Protégé 的类表达式编辑器中是不允许的。为什么?

提前致谢!

4

2 回答 2

3

它不起作用,因为 Protégé 是 OWL 2 的编辑器,实际上它对构面中允许的数据类型有一些限制:

OWL 2 数据类型映射为实数、十进制数和整数的表示提供了以下数据类型:

owl:real
owl:rational
xsd:decimal
xsd:integer
xsd:nonNegativeInteger
xsd:nonPositiveInteger
xsd:positiveInteger
xsd:negativeInteger
xsd:long
xsd:int
xsd:short
xsd:byte
xsd:unsignedLong
xsd:unsignedInt
xsd:unsignedShort
xsd:unsignedByte

可能的类表达式:

hasHeight some xsd:decimal[>= 1.7, <= 1.8](Protégé 中的解析器似乎需要<=符号后的空格)

于 2018-06-17T15:22:08.050 回答
2

要定义类型的个体Person可以具有一个或多个hasHeight数据属性,您可以声明以下内容:

DataProperty: hasHeight
Class: Person
  SubClassOf:
    hasHeight some xsd:double

请注意,这与基数限制不同,基数限制限制了一个类型的个体Person可以通过hasHeight属性关联的次数。要指定类型的个体Person恰好具有 1 个高度,您可以按如下方式指定它:

DataProperty: hasHeight
Class: Person
  SubClassOf: 
    hasHeight exactly 1 xsd:double

因此完整的定义如下:

DataProperty: hasHeight
Class: Person
  SubClassOf:
    hasHeight some xsd:double, 
    hasHeight exactly 1 xsd:double
于 2018-06-17T15:22:34.370 回答