问题
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
回答1:
the Dangling_node instances (nodes that are connected to one link or arc) are not correctly assigned
You'd need to assert what's true, and then what's not true. For instance, since Node_005 is connected to just Arc_004, you'd need to say something like this:
(1) connectedTo(Node_005,Arc_004)
and
(2) {Node_005} ⊑ ∀connectedTo.{Arc_004}
(1) says that the node is actually connected to the arc. (2) says that everything that the node is connected to is an element of the class {Arc_004}, that is, that the only things it's connected to is that arc. Then, you'd an axiom that says that if something is connected to at most one arc, then it's a dangling node:
(3) (≤ connectedTo.1) ⊑ DanglingNode
(3) is a general class axiom. You can enter those in Protege, but the UI doesn't make it obvious. See this answer for more about how to create those.
Here's what this looks like in Protege (except that instead of the general class axiom (3), I just made Dangling equivalent to connectedTo exactly 1):
Class definition for Dangling
Axioms about the Node
Result of Reasoner (Node is Dangling)
来源:https://stackoverflow.com/questions/30374169/closure-axiom-for-instances-so-that-reasoner-can-correctly-classify-instances-in