Class IntersectionCPQ

java.lang.Object
dev.roanh.gmark.lang.cpq.IntersectionCPQ
All Implemented Interfaces:
QueryFragment, CPQ, QueryLanguageSyntax, OutputFormal, OutputSQL, OutputXML

public class IntersectionCPQ extends Object implements CPQ
CPQ modelling the intersection between CPQs (also known as the conjunction operation).
  • Field Details

    • cpq

      private final List<CPQ> cpq
      The CPQs of the intersection.
  • Constructor Details

  • Method Details

    • writeSQL

      public void writeSQL(IndentWriter writer)
      Description copied from interface: OutputSQL
      Writes the SQL representation of this object to the given writer.
      Specified by:
      writeSQL in interface OutputSQL
      Parameters:
      writer - The writer to write to.
    • toFormalSyntax

      public String toFormalSyntax()
      Description copied from interface: OutputFormal
      Converts this object to its formal logic form.
      Specified by:
      toFormalSyntax in interface OutputFormal
      Returns:
      The formal representation of this object.
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • writeXML

      public void writeXML(IndentWriter writer)
      Description copied from interface: OutputXML
      Writes this object as XML to the given writer.
      Specified by:
      writeXML in interface OutputXML
      Parameters:
      writer - The writer to write to.
    • toQueryGraph

      public QueryGraphCPQ toQueryGraph(QueryGraphCPQ.Vertex source, QueryGraphCPQ.Vertex target)
      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 using CPQ.toQueryGraph() instead should be sufficient for most use cases, using this version instead can lead to unexpected results.
      Specified by:
      toQueryGraph in interface CPQ
      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 interface CPQ
      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.
      Specified by:
      isLoop in interface CPQ
      Returns:
      True if this CPQ is a loop.
      See Also:
    • getOperationType

      public OperationType getOperationType()
      Description copied from interface: QueryFragment
      The top level operation represented by this query fragment.
      Specified by:
      getOperationType in interface QueryFragment
      Returns:
      The top level operation for this query fragment.
    • toAbstractSyntaxTree

      public QueryTree toAbstractSyntaxTree()
      Description copied from interface: QueryFragment
      Converts this query fragment to an equivalent abstract syntax tree.
      Specified by:
      toAbstractSyntaxTree in interface QueryFragment
      Returns:
      The constructed Abstract Syntax Tree (AST).