I am a geographer and a new comer in the field of ontology trying to make sense out of these two. Therefore, I have created a simple ontology, as follows:
Thing
Feature
Lane
Segment(equivalent to Arc)
Geometry
Arc (equivalent to Segment)
Node
Dangling_Node
Intersection_node
you can find the .owl file
here instantiated with a very simple spatial road dataset (fig1).
the ontology is consistent without and with instances, but when I run the reasoner, the Dangling_node instances (nodes that are connected to one link or arc) are not correctly assigned to the relevant subclass and only assigned to the Node superclass. The intersection_node (the node which is connected to more than one link) instances are correctly assigned.
I guess according to the open world assumption, the reasoner considers that the node might be 'is_extent_of' another Arc but just not mentioned here.
Do I need, or how could I have, a closure axiom for the instance? Which part of my ontology implementation is wrong?
Edited:
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)
the General Class Axiom for the Dangling_node is as follows:
Node and (is_extent_of max 1 Arc) SubClassOf Dangling_node