如何在Protégé/ OWL / DL中使用double值来表示类表达式(语法)?

时间:2018-06-17 14:52:46

标签: double owl semantic-web protege description-logic

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

例如,我想以米为单位表达一个人的身高:

  • hasHeight value 1.89
  • hasHeight min 1.70

我该怎么做?

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

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

提前致谢!

2 个答案:

答案 0 :(得分:3)

它不起作用,因为Protégé是OWL 2的编辑器,事实上它有一些restrictions on the datatypes允许的方面:

  

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é中的解析器似乎需要<=符号后的空格

答案 1 :(得分: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
相关问题