edu.berkeley.cs.db.yfilterplus.querygenerator
Class PathGenerator

java.lang.Object
  |
  +--edu.berkeley.cs.db.yfilterplus.querygenerator.PathGenerator

public class PathGenerator
extends java.lang.Object


Field Summary
static boolean PUBLIC_USE
           
 
Constructor Summary
PathGenerator(DTDStat stat, double theta)
           
PathGenerator(java.lang.String dtdFileName, double theta)
           
PathGenerator(java.lang.String root, java.util.Hashtable elements, double theta)
           
PathGenerator(java.lang.String root, java.util.Hashtable elements, double theta, DTDAnalyzer analyzer)
           
 
Method Summary
 void generateDistinctPaths(int numQ, int maxDepth, double wildcard, double dSlash, double predProb, char levelDist, double nestedPathProb, int levelPathNesting, double joinProb, java.lang.String outFilename)
           
 java.lang.StringBuffer generateOnePath(int maxDepth, int currentLevel, double wildcard, double dSlash, double predProb, char levelDist, double nestedPathProb)
          this is an even simpler variation of the above function, without consideration of deep nesting of paths, joins.
 java.lang.StringBuffer generateOnePath(int maxDepth, int currentLevel, double wildcard, double dSlash, double predProb, char levelDist, double nestedPathProb, int levelPathNesting, double joinProb)
          this is a simpler version of the above function without an explicit root element.
 java.lang.StringBuffer generateOnePath(int maxDepth, int currentLevel, double wildcard, double dSlash, double predProb, char levelDist, double nestedPathProb, int levelPathNesting, double joinProb, java.lang.String startElement)
          this function differs from above by using probability for generation of predicates and nested path expression.
 java.lang.StringBuffer generateOnePath(int maxDepth, int currentLevel, double wildcard, double dSlash, double predProb, char levelDist, double nestedPathProb, java.lang.String root)
          this is an another simpler variation without consideration of deep nesting of paths, joins.
 java.lang.StringBuffer generateOnePath(int maxDepth, int currentLevel, double wildcard, double dSlash, int noPreds, char levelDist, int noNestedPaths, int levelPathNesting, double joinProb, java.lang.String startElement)
          Generates a query based on parameters.
 void generateOnePredicate(java.lang.StringBuffer query, dtdElement element)
           
 void generatePaths(int numQ, int maxDepth, double wildcard, double dSlash, double predProb, char levelDist, double nestedPathProb, int levelPathNesting, double joinProb, java.lang.String outFilename)
           
 java.util.ArrayList generatePredicatePaths(int numPredicatePaths, int maxDepth, double wildcard, double dSlash, dtdElement element)
           
 java.lang.StringBuffer generateRelativeJoinPath(int maxDepth, int currentLevel, double wildcard, double dSlash, double predProb, char levelDist, double nestedPathProb, int levelPathNesting, double joinProb, java.lang.String startElement)
          greedily look for a path that has PCData for join
 java.lang.StringBuffer generateRelativePath(int maxDepth, int currentLevel, double wildcard, double dSlash, double predProb, char levelDist, double nestedPathProb, int levelPathNesting, double joinProb)
          generate a relative path
 java.lang.StringBuffer generateRelativePath(int maxDepth, int currentLevel, double wildcard, double dSlash, double predProb, char levelDist, double nestedPathProb, int levelPathNesting, double joinProb, java.lang.String startElement)
           
 java.lang.StringBuffer generateSimplePath(int maxDepth, double wildcard, double dSlash, java.lang.String type, java.lang.String startElement)
           
 java.util.ArrayList generateSubSelects(int numSubSelects, int maxDepth, double wildcard, double dSlash, dtdElement element)
           
 dtdElement getCurrentElement()
           
 java.lang.String getCurrentElementName()
           
 int getCurrentLevel()
           
static void main(java.lang.String[] args)
           
 void printStats()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

PUBLIC_USE

public static boolean PUBLIC_USE
Constructor Detail

PathGenerator

public PathGenerator(DTDStat stat,
                     double theta)

PathGenerator

public PathGenerator(java.lang.String root,
                     java.util.Hashtable elements,
                     double theta)

PathGenerator

public PathGenerator(java.lang.String root,
                     java.util.Hashtable elements,
                     double theta,
                     DTDAnalyzer analyzer)

PathGenerator

public PathGenerator(java.lang.String dtdFileName,
                     double theta)
Method Detail

generatePaths

public void generatePaths(int numQ,
                          int maxDepth,
                          double wildcard,
                          double dSlash,
                          double predProb,
                          char levelDist,
                          double nestedPathProb,
                          int levelPathNesting,
                          double joinProb,
                          java.lang.String outFilename)

generateDistinctPaths

public void generateDistinctPaths(int numQ,
                                  int maxDepth,
                                  double wildcard,
                                  double dSlash,
                                  double predProb,
                                  char levelDist,
                                  double nestedPathProb,
                                  int levelPathNesting,
                                  double joinProb,
                                  java.lang.String outFilename)

generateOnePath

public java.lang.StringBuffer generateOnePath(int maxDepth,
                                              int currentLevel,
                                              double wildcard,
                                              double dSlash,
                                              int noPreds,
                                              char levelDist,
                                              int noNestedPaths,
                                              int levelPathNesting,
                                              double joinProb,
                                              java.lang.String startElement)
Generates a query based on parameters. This is a basic path generation function that starts from the specified root element and generates a path according to parameters. Note that it tries to generate a fixed number of predicates and nested path expressions. Default values for query generation. Refer README

Parameters:
maxDepth - Maximum depth of a query: 6
currentLevel - The current context level: 0 (the root node)
wildcard - Probability of a wildcard (*) at each location step: 0.2
dSlash - Probability of a double-slash (//) at each location step: 0.2
noPreds - Number or probability of value-based predicates
levelDist - Distribution of predicates across the location steps in a query. Currently uniform only.
noNestedPaths - Number of nested path filters in a query: 0. (Uniformly distributed across all location steps.)
levelPathNesting - Level of nesting of path expressions. Currently nesting to one level only.
joinProb - Probability of having two nested paths compared by "=". Currently joinProb = 0.
startElement - The starting element

generateOnePath

public java.lang.StringBuffer generateOnePath(int maxDepth,
                                              int currentLevel,
                                              double wildcard,
                                              double dSlash,
                                              double predProb,
                                              char levelDist,
                                              double nestedPathProb,
                                              int levelPathNesting,
                                              double joinProb,
                                              java.lang.String startElement)
this function differs from above by using probability for generation of predicates and nested path expression.


generateOnePath

public java.lang.StringBuffer generateOnePath(int maxDepth,
                                              int currentLevel,
                                              double wildcard,
                                              double dSlash,
                                              double predProb,
                                              char levelDist,
                                              double nestedPathProb,
                                              int levelPathNesting,
                                              double joinProb)
this is a simpler version of the above function without an explicit root element. so the default root element will be used.


generateOnePath

public java.lang.StringBuffer generateOnePath(int maxDepth,
                                              int currentLevel,
                                              double wildcard,
                                              double dSlash,
                                              double predProb,
                                              char levelDist,
                                              double nestedPathProb)
this is an even simpler variation of the above function, without consideration of deep nesting of paths, joins. the default root element will be used.


generateOnePath

public java.lang.StringBuffer generateOnePath(int maxDepth,
                                              int currentLevel,
                                              double wildcard,
                                              double dSlash,
                                              double predProb,
                                              char levelDist,
                                              double nestedPathProb,
                                              java.lang.String root)
this is an another simpler variation without consideration of deep nesting of paths, joins. but the root element is provided


generateRelativePath

public java.lang.StringBuffer generateRelativePath(int maxDepth,
                                                   int currentLevel,
                                                   double wildcard,
                                                   double dSlash,
                                                   double predProb,
                                                   char levelDist,
                                                   double nestedPathProb,
                                                   int levelPathNesting,
                                                   double joinProb)
generate a relative path


generateRelativePath

public java.lang.StringBuffer generateRelativePath(int maxDepth,
                                                   int currentLevel,
                                                   double wildcard,
                                                   double dSlash,
                                                   double predProb,
                                                   char levelDist,
                                                   double nestedPathProb,
                                                   int levelPathNesting,
                                                   double joinProb,
                                                   java.lang.String startElement)

generateRelativeJoinPath

public java.lang.StringBuffer generateRelativeJoinPath(int maxDepth,
                                                       int currentLevel,
                                                       double wildcard,
                                                       double dSlash,
                                                       double predProb,
                                                       char levelDist,
                                                       double nestedPathProb,
                                                       int levelPathNesting,
                                                       double joinProb,
                                                       java.lang.String startElement)
greedily look for a path that has PCData for join


generateOnePredicate

public void generateOnePredicate(java.lang.StringBuffer query,
                                 dtdElement element)

getCurrentElement

public dtdElement getCurrentElement()

getCurrentElementName

public java.lang.String getCurrentElementName()

getCurrentLevel

public int getCurrentLevel()

generatePredicatePaths

public java.util.ArrayList generatePredicatePaths(int numPredicatePaths,
                                                  int maxDepth,
                                                  double wildcard,
                                                  double dSlash,
                                                  dtdElement element)

generateSubSelects

public java.util.ArrayList generateSubSelects(int numSubSelects,
                                              int maxDepth,
                                              double wildcard,
                                              double dSlash,
                                              dtdElement element)

generateSimplePath

public java.lang.StringBuffer generateSimplePath(int maxDepth,
                                                 double wildcard,
                                                 double dSlash,
                                                 java.lang.String type,
                                                 java.lang.String startElement)

printStats

public void printStats()

main

public static void main(java.lang.String[] args)