links (links)
a TernaryPredicate that specifies the
GraphArc connecting two GraphNodes.
Ontology
SUMO / GRAPH-THEORYClass(es)
Coordinate term(s)
altitude
between
capability
conditional probability
confers obligation
confers right
connects
depth
distance
domain
domain subclass
has purpose for agent
occupies position
orientation
prefers
related external concept
represents for agent
represents in language
temporally between
temporally between or equal
Type restrictions
links(graph node, graph node, graph arc)
Axioms (7)
If graph is an instance of graph and node1 is an instance of graph node and node2 is an instance of graph node and node1 is a part of graph and node2 is a part of graph and node1 is not equal to node2, then there exist arc,path so that - arc links node1 and node2
or .
(=>
(and
(instance ?GRAPH Graph)
(instance ?NODE1 GraphNode)
(instance ?NODE2 GraphNode)
(graphPart ?NODE1 ?GRAPH)
(graphPart ?NODE2 ?GRAPH)
(not
(equal ?NODE1 ?NODE2)))
(exists
(?ARC ?PATH)
(or
(links ?NODE1 ?NODE2 ?ARC)
(and
(subGraph ?PATH ?GRAPH)
(instance ?PATH GraphPath)
(or
(and
(equal
(BeginNodeFn ?PATH)
?NODE1)
(equal
(EndNodeFn ?PATH)
?NODE2))
(and
(equal
(BeginNodeFn ?PATH)
?NODE2)
(equal
(EndNodeFn ?PATH)
?NODE1)))))))
If graph is an instance of graph, then there exist node1,node2,node3,arc1,arc2 so that node1 is a part of graph and node2 is a part of graph and node3 is a part of graph and arc1 is a part of graph and arc2 is a part of graph and node2 links arc1 and node1 and node3 links arc2 and node2 and node1 is not equal to node2 and node2 is not equal to node3 and node1 is not equal to node3 and arc1 is not equal to arc2.
(=>
(instance ?GRAPH Graph)
(exists
(?NODE1 ?NODE2 ?NODE3 ?ARC1 ?ARC2)
(and
(graphPart ?NODE1 ?GRAPH)
(graphPart ?NODE2 ?GRAPH)
(graphPart ?NODE3 ?GRAPH)
(graphPart ?ARC1 ?GRAPH)
(graphPart ?ARC2 ?GRAPH)
(links ?ARC1 ?NODE1 ?NODE2)
(links ?ARC2 ?NODE2 ?NODE3)
(not
(equal ?NODE1 ?NODE2))
(not
(equal ?NODE2 ?NODE3))
(not
(equal ?NODE1 ?NODE3))
(not
(equal ?ARC1 ?ARC2)))))
graph is an instance of multi graph if and only if there exist arc1,arc2,node1,node2 so that arc1 is a part of graph and arc2 is a part of graph and node1 is a part of graph and node2 is a part of graph and arc1 links node1 and node2 and arc2 links node1 and node2 and arc1 is not equal to arc2.
(<=>
(instance ?GRAPH MultiGraph)
(exists
(?ARC1 ?ARC2 ?NODE1 ?NODE2)
(and
(graphPart ?ARC1 ?GRAPH)
(graphPart ?ARC2 ?GRAPH)
(graphPart ?NODE1 ?GRAPH)
(graphPart ?NODE2 ?GRAPH)
(links ?NODE1 ?NODE2 ?ARC1)
(links ?NODE1 ?NODE2 ?ARC2)
(not
(equal ?ARC1 ?ARC2)))))
If node is an instance of graph node, then there exist other,arc so that arc links node and other.
(=>
(instance ?NODE GraphNode)
(exists
(?OTHER ?ARC)
(links ?NODE ?OTHER ?ARC)))
If arc is an instance of graph arc, then there exist node1,node2 so that arc links node1 and node2.
(=>
(instance ?ARC GraphArc)
(exists
(?NODE1 ?NODE2)
(links ?NODE1 ?NODE2 ?ARC)))
loop is an instance of graph loop if and only if there exists node so that loop links node and node.
(<=>
(instance ?LOOP GraphLoop)
(exists
(?NODE)
(links ?NODE ?NODE ?LOOP)))
If arc links node1 and node2, then arc links node2 and node1.
(=>
(links ?NODE1 ?NODE2 ?ARC)
(links ?NODE2 ?NODE1 ?ARC))