Kri*_*ian 3 owl ontology protege
我正在玩Protégé5来构建本体.在搜索域和范围的主题后,我发现域和范围不一定是关联两件事的正确方法.
需要记住的重要一点是,OWL限制可以
推断.那么这意味着如果您提供对象属性的域和范围信息,那么可以根据属性的使用来推断这些类.特别是,域和范围
不是传统编程
语言意义上的类型检查.如果您有足够的不相交信息以便能够创建逻辑不一致,他们只能(有时)以这种方式行事.因此,例如,让我们假设我们有以下本体
类:人类
:车辆
类别:引擎
属性:hasEngine:domain车辆:范围引擎John isa Person
John hasEngine engine-1此时,将进行推断并得出结论约翰是一辆
车.这不是类型违规,因为域和范围
信息用于推断.(如果
声明Person和Vehicle 是不相交的类,则会产生不一致的本体
,这更接近于经典的类型检查结果,但它
仅适用于类真正不相交的情况).
因此,如果域和范围不好,那么我应该使用什么来建模事物类之间的关系呢?
编辑:我最初声明新版本中没有域/范围字段.几乎在发布之后,我意识到这些领域实际上仍然可用.
您仍然可以在Protege 5中声明对象属性的域和范围.这是来自Protege 5 beta的截图,其对象属性hasParent 具有域Human:

你也可以在Web Protege中做同样的事情:

也就是说,如果由于某种原因你无法使用rdfs:domain和rdfs:range axioms,你可以使用限制和子类公理获得相同的效果.公理:
p rdfs:range R
p rdfs:domain D.
相当于
⊤⊑∀pR
⊤⊑∀p -1 .D
或者在曼彻斯特的语法
owl:Thing subClassOf p 只有 R
owl:Thing subClassOf(逆 p)只有 D.
我认为列表中的消息只是指出用户从类型化编程语言进入OWL时常见的陷阱之一; 他们期望"car72 hasSocialSecurityNumber xxx"将是不一致的,因为hasSocialNumber的域是Person而car72的类型是Car.相反,car72将被推断为具有Car和Person类型,除非存在使其不一致的其他公理,否则它们不会不一致.