我正在玩Protégé5来构建本体。在搜索域和范围的主题之后,我发现域和范围不一定是关联两件事的正确方法。
[protege-owl] Specifying domain and range in object properties:
要记住的重要一点是OWL限制能够实现 推理。那么这意味着如果你提供域和范围 对象属性的信息,然后可以推断出这些类 基于财产的使用。特别是域和范围
不是传统编程意义上的类型检查 语言。如果你有足够的话,他们只能(有时)采取这种行动 不相交信息能够产生逻辑不一致。因此,举例来说,我们假设我们有以下本体
班级:人员 分类:车辆
类别:发动机
属性:hasEngine:domain Vehicle:range Engine约翰是一个人 约翰有引擎引擎-1
此时,将进行推断并得出结论约翰是一个 车辆。这不是类型违规,因为域和范围为 信息用于推断。 (如果人和车辆是 宣称是不相交的类,然后是一个不一致的本体论 结果,更接近经典的类型检查结果,但它是 仅适用于班级真正不相交的情况。)
因此,如果域和范围不好,那么我应该使用什么来建模事物类之间的关系呢?
编辑:我最初声明新版本中没有域/范围字段。几乎在发布之后,我意识到这些领域实际上仍然可用。
答案 0 :(得分:6)
你仍然可以在Protege 5中声明对象属性的域和范围。这里是Protege 5 beta的截图,对象属性为 hasParent 它有一个域人:
您也可以在Web Protege中执行相同操作:
那就是说,如果由于某种原因你无法使用 rdfs:domain 和 rdfs:range 公理,那么可以获取使用限制和子类公理的相同效果。公理:
p rdfs:范围R
p rdfs:domain D
相当于
⊤⊑∀p.R
⊤⊤⊑p -1 .D
或曼彻斯特语法
猫头鹰:事情 subClassOf p 仅 R
owl:东西 subClassOf (反向 p)仅 D
我认为列表中的消息只是指出了用户从类型化编程语言进入OWL时常见的陷阱之一;他们希望" car72拥有社会安全号xxx"将是一个不一致,因为hasSocialNumber的域是Person,car72有类型Car。相反,car72将被推断为具有Car和Person类型,除非存在使其不一致的其他公理,否则它们不会相互矛盾。