Package dev.roanh.gmark.conjunct.cpq
Class EdgeCPQ
java.lang.Object
dev.roanh.gmark.conjunct.cpq.EdgeCPQ
CPQ modelling a single label traversal.
-
Field Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionint
Returns the diameter of this CPQ.getLabel()
Gets the label (symbol) for this edge.boolean
isLoop()
Tests if this CPQ is a loop, meaning its source and target are the same.toQueryGraph
(QueryGraphCPQ.Vertex source, QueryGraphCPQ.Vertex target) Computes and returns the query graph for this CPQ using the given source and target vertices for the computation.toSQL()
Converts this object to an SQL query.toString()
void
writeXML
(IndentWriter writer) Writes this object as XML to the given writer.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface dev.roanh.gmark.conjunct.cpq.CPQ
computeCore, isHomomorphicTo, toQueryGraph
-
Field Details
-
symbol
The label traversed by this CPQ.
-
-
Constructor Details
-
EdgeCPQ
Constructs a new edge CPQ with the given label to traverse.- Parameters:
symbol
- The label to traverse.
-
-
Method Details
-
getLabel
Gets the label (symbol) for this edge.- Returns:
- The label for this edge.
-
toString
-
toSQL
Description copied from interface:OutputSQL
Converts this object to an SQL query. -
writeXML
Description copied from interface:OutputXML
Writes this object as XML to the given writer. -
toQueryGraph
Description copied from interface:CPQ
Computes and returns the query graph for this CPQ using the given source and target vertices for the computation. Usually usingCPQ.toQueryGraph()
instead should be sufficient for most use cases, using this version instead can lead to unexpected results.- Specified by:
toQueryGraph
in interfaceCPQ
- Parameters:
source
- The source vertex to use.target
- The target vertex to use.- Returns:
- The query graph for this CPQ.
- See Also:
-
getDiameter
public int getDiameter()Description copied from interface:CPQ
Returns the diameter of this CPQ. The diameter of a CPQ is the largest number of labels to which the join operation is applied. A simpler way to think of this concept is the length of the largest path through the CPQ from source to target.- Specified by:
getDiameter
in interfaceCPQ
- Returns:
- The diameter of this CPQ.
-
isLoop
public boolean isLoop()Description copied from interface:CPQ
Tests if this CPQ is a loop, meaning its source and target are the same. When visualised as a query graph this means that the source and target node are the same node. In its grammar form this means that there is an intersection with identity at the highest level in the CPQ.
-