我是一名地理学家,也是本体领域的新成员,试图理解这两者。因此,我创建了一个简单的本体,如下:
Thing
Feature
Lane
Segment(equivalent to Arc)
Geometry
Arc (equivalent to Segment)
Node
Dangling_Node
Intersection_node
您可以找到使用非常简单的空间道路数据集实例化的.owl file
here(图1)。
本体在没有实例的情况下是一致的,但是当我运行推理器时,Dangling_node实例(连接到一个链接或弧的节点)没有正确地分配给相关的子类,只被分配给Node超类。正确分配了intersection_node(连接到多个链接的节点)实例。
我想根据开放世界的假设,推理者认为节点可能是'is_extent_of'另一个弧,但这里没有提到。
我是否需要,或者我怎么能拥有该实例的闭包公理? 我的本体实现的哪一部分是错误的?
已编辑:
Equivalent to:
Node and (is_extent_of max 1 Arc)
Subclass of (Anonymous Ancester):
(is_extent_of only Arc) and (is_extent_of min 1 Arc)
Dangling_node的通用类公理如下:
Node and (is_extent_of max 1 Arc) SubClassOf Dangling_node
答案 0 :(得分:2)
Dangling_node实例(连接到一个链接或节点的节点) arc)未正确分配
你需要断言什么是真的,然后才是真的。例如,由于Node_005只连接到Arc_004,你需要说出这样的话:
(1)connectedTo(Node_005,Arc_004)
和
(2){Node_005}⊑⊑connectedTo。{Arc_004}
(1)表示节点实际连接到弧。 (2)表示节点所连接的所有内容都是类{Arc_004}的一个元素,也就是说,它所连接的唯一事物就是那个弧。然后,你有一个公理,说如果某个东西最多连接到一个弧,那么它就是一个悬空节点:
(3)(≤connectionTo.1)⊑DanglingNode
(3)是一般类公理。您可以在Protege中输入这些内容,但UI不会显而易见。有关如何创建这些内容的详情,请参阅this answer。
以下是Protege中的内容(除了通用类公理(3)之外,我只是将悬空 等效改为 connectedTo正好1 < /强>):