我正在尝试使用 GraphDB 免费版 9.5.1 根据值范围对个人进行分类。但是,尽管使用了 OWL-RL 推理器,我并没有得到预期的结果。
我已经建立了一个包含三个类的简单本体。一个person
类,有两个子类:newborn
和子类。
- person
- newborn
- child
本体具有一个数据属性age
。Anewborn
被定义为(即等同于)具有 的人age value 0
,而孩子被定义为具有 的人age > 0
。这是曼彻斯特语法中的 OWL:
Class: person-test:person
Class: person-test:newborn
EquivalentTo:
person-test:person
and (person-test:age value 0)
Class: person-test:child
EquivalentTo:
person-test:person
and (person-test:age some xsd:integer[> 0])
DataProperty: person-test:age
为了检验推理,我定义了两个个体:
person0
年龄为 0person1
年龄 > 1
这是猫头鹰:
Individual: person-test:person0
Types:
person-test:person
Facts:
person-test:age 0
Individual: person-test:person1
Types:
person-test:person
Facts:
person-test:age 1
使用 Protege,我能够运行 HeremiT 推理器并获得预期的结果:
person0
被归类为newborn
person1
被归类为child
但是,当我使用 OWL-RL 推理将本体加载到 GraphDB 中时,结果是不同的:person1
不是归类为 a ,而是归类为 a 。child
person0
newborn
GraphDB 推理器是否适用于值范围,例如xsd:integer[> 0]
?
谢谢!