Package dev.roanh.gmark.lang.cpq
Class ConcatCPQ
- All Implemented Interfaces:
QueryFragment
,CPQ
,QueryLanguageSyntax
,OutputFormal
,OutputSQL
,OutputXML
CPQ modelling the concatenation of a number of CPQs
(also known as the join operation).
-
Field Summary
Fields inherited from class dev.roanh.gmark.lang.generic.GenericConcatenation
elements
Fields inherited from interface dev.roanh.gmark.lang.QueryLanguageSyntax
CHAR_DISJUNCTION, CHAR_INTERSECTION, CHAR_INVERSE, CHAR_JOIN, CHAR_KLEENE
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionint
Returns the diameter of this CPQ.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.void
writeXML
(IndentWriter writer) Writes this object as XML to the given writer.Methods inherited from class dev.roanh.gmark.lang.generic.GenericConcatenation
getOperationType, toAbstractSyntaxTree, toFormalSyntax, toString, writeSQL
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface dev.roanh.gmark.lang.cpq.CPQ
computeCore, getQueryLanguage, isHomomorphicTo, toQueryGraph
Methods inherited from interface dev.roanh.gmark.output.OutputFormal
toFormalSyntax
Methods inherited from interface dev.roanh.gmark.ast.QueryFragment
getOperationType, toAbstractSyntaxTree
-
Constructor Details
-
ConcatCPQ
Constructs a new concat CPQ with the given list of CPQs to concatenate.- Parameters:
cpqs
- The CPQs to concatenate.- Throws:
IllegalArgumentException
- When the list of CPQs is empty.
-
-
Method Details
-
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.
-