+ /**
+ * Checks if any edge rules exist between the two given node types with contains-other-v NONE, in either A|B or B|A order.
+ *
+ * @param nodeA - node at one end of the edge
+ * @param nodeB - node at the other end
+ * @param label - edge label
+ * @return true, if any such rules exist
+ */
+ public boolean hasCousinEdgeRule(String nodeA, String nodeB, String label) {
+ return this.hasEdgeRule(EdgeType.COUSIN, nodeA, nodeB, label);
+ }
+
+ /**
+ * Checks if any edge rules exist between the two given nodes with contains-other-v !NONE, in either A|B or B|A order.
+ *
+ * @param aVertex - node at one end of the edge
+ * @param bVertex - node at the other end
+ * @return true, if any such rules exist
+ */
+ public boolean hasTreeEdgeRule(Vertex aVertex, Vertex bVertex) {
+ String outType = aVertex.<String>property(AAIProperties.NODE_TYPE).orElse(null);
+ String inType = bVertex.<String>property(AAIProperties.NODE_TYPE).orElse(null);
+ return this.hasTreeEdgeRule(outType, inType);
+ }
+
+ /**
+ * Checks if any edge rules exist between the two given nodes with contains-other-v NONE with edge label, in either A|B or B|A order.
+ *
+ * @param aVertex - node at one end of the edge
+ * @param bVertex - node at the other end
+ * @param label - edge label
+ * @return true, if any such rules exist
+ */
+ public boolean hasCousinEdgeRule(Vertex aVertex, Vertex bVertex, String label) {
+ String outType = aVertex.<String>property(AAIProperties.NODE_TYPE).orElse(null);
+ String inType = bVertex.<String>property(AAIProperties.NODE_TYPE).orElse(null);
+ return this.hasCousinEdgeRule(outType, inType, label);
+ }
+
+ /**
+ * Checks if any edge rules exist between the two given nodes w/ edge label, in either A|B or B|A order.
+ *
+ * @param nodeA - node at one end of the edge
+ * @param nodeB - node at the other end
+ * @param label - edge label
+ * @return true, if any such rules exist
+ */
+ public boolean hasEdgeRule(String nodeA, String nodeB, String label) {
+ return this.hasEdgeRule(null, nodeA, nodeB, label);