Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Closure axiom for instances so that reasoner can correctly classify instances in ontology

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). enter image description here

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
like image 447
msc87 Avatar asked Feb 02 '26 18:02

msc87


1 Answers

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

class definition for Dangling

Axioms about the Node

individual axioms for Node

Result of Reasoner (Node is Dangling)

Dangling inferred by reasoner

like image 91
Joshua Taylor Avatar answered Feb 04 '26 14:02

Joshua Taylor



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!