|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectde.fuberlin.wiwiss.d2rq.rdql.ExpressionTranslator
Translates an RDQL expression into a SQL expression. The SQL expression that may be weaker than the RDQL expression. Idea: traverse the RDQL expression tree. If there is a mapping defined for an operator, translate its arguments, and construct the SQL term. Issues: 1) we must keep track of argument types, because a + might be a plus or a concatenate. 2) Negation turns weaker into stronger. 3) Some arguments in AND can be skipped (expression becomes weaker) 4) Translation of variables into Columns needs access to calling context (ConstraintHandler and SQLStatementMaker) TODO: split code into modules for 1) Query Language expressions 2) SQL dialects 3) Variable translators
Nested Class Summary | |
static interface |
ExpressionTranslator.Result
A Result is an auxiliary construct used with the ExpressionTranslator class only. |
Field Summary | |
static int |
AnyType
|
(package private) int |
argType
|
static int |
BitType
|
static int |
BoolType
|
static java.lang.String |
concatenateOp
|
(package private) static java.lang.String |
exprBaseURI
|
static ExpressionTranslator.Result |
falseBuffer
|
(package private) ConstraintHandler |
handler
|
static int |
LeftRightType
|
static int |
LeftType
|
static java.util.Collection |
logSqlExpressions
|
static int |
NoType
|
static int |
NumberType
|
(package private) java.util.Map |
opMap
|
static int |
RightType
|
static int |
SameType
|
(package private) SQLStatementMaker |
statementMaker
|
static int |
StringType
|
static ExpressionTranslator.Result |
trueBuffer
|
static int |
UriType
|
(package private) VariableBindings |
variableBindings
|
(package private) java.util.Map |
variableNameToNodeConstraint
|
(package private) boolean |
weaker
indicates that the translated sub-expression should be weaker or stronger than the rdql sub-expression. |
Constructor Summary | |
ExpressionTranslator(ConstraintHandler handler,
SQLStatementMaker sql)
|
Method Summary | |
ExpressionTranslator.Result |
castToString(ExpressionTranslator.Result r)
|
(package private) java.lang.String |
constructURI(java.lang.String className)
|
(package private) OperatorMap |
getSQLOp(java.lang.Object e)
|
(package private) OperatorMap |
getSQLOp(java.lang.String className)
|
static ExpressionTranslator.Result |
newResult(java.lang.StringBuffer expr,
int type)
|
static ExpressionTranslator.Result |
newResult(java.lang.String expr,
int type)
|
(package private) java.lang.String |
opURL(java.lang.Object obj)
|
(package private) OperatorMap |
putOp(java.lang.String className,
java.lang.String sqlOp)
|
(package private) OperatorMap |
putOp(java.lang.String className,
java.lang.String sqlOp,
int argTypes)
|
(package private) OperatorMap |
putOp(java.lang.String className,
java.lang.String sqlOp,
int argTypes,
int returnType)
|
(package private) OperatorMap |
putOp(java.lang.String className,
java.lang.String sqlOp,
int leftTypes,
int rightTypes,
int leftRightConstraint,
int returnType)
|
(package private) void |
setupOperatorMap()
Defines operator maps between RDQL classes and SQL operators or functions. |
ExpressionTranslator.Result |
translate(com.hp.hpl.jena.graph.query.Expression.Variable var)
|
ExpressionTranslator.Result |
translate(com.hp.hpl.jena.graph.query.Expression e)
Translates a Jena RDQL Expression into an SQL expression. |
ExpressionTranslator.Result |
translate(com.hp.hpl.jena.rdql.parser.ParsedLiteral e)
|
ExpressionTranslator.Result |
translate(com.hp.hpl.jena.rdql.parser.Q_LogicalAnd e)
|
ExpressionTranslator.Result |
translate(com.hp.hpl.jena.rdql.parser.Q_LogicalOr e)
|
ExpressionTranslator.Result |
translate(com.hp.hpl.jena.rdql.parser.Q_UnaryNot e)
is this really the logical Not or bit not or both? |
ExpressionTranslator.Result |
translate(com.hp.hpl.jena.rdql.parser.Q_Var var)
translate a variable. |
ExpressionTranslator.Result |
translate(com.hp.hpl.jena.rdql.parser.WorkingVar var)
|
ExpressionTranslator.Result |
translateAnd(com.hp.hpl.jena.rdql.parser.Q_LogicalAnd e)
|
java.util.List |
translateArgs(com.hp.hpl.jena.graph.query.Expression e,
boolean strict,
ExpressionTranslator.Result neutral)
translates an RDQL expression |
ExpressionTranslator.Result |
translateBinary(OperatorMap op,
com.hp.hpl.jena.graph.query.Expression e)
|
ExpressionTranslator.Result |
translateColumn(Column col)
|
ExpressionTranslator.Result |
translateExprVariable(com.hp.hpl.jena.graph.query.Expression.Variable var)
|
ExpressionTranslator.Result |
translateNode(com.hp.hpl.jena.graph.Node n)
|
ExpressionTranslator.Result |
translateNodeConstraint(NodeConstraint c)
|
ExpressionTranslator.Result |
translateNot(com.hp.hpl.jena.rdql.parser.Q_UnaryNot e)
|
ExpressionTranslator.Result |
translateOr(com.hp.hpl.jena.rdql.parser.Q_LogicalOr e)
|
ExpressionTranslator.Result |
translateParsedLiteral(com.hp.hpl.jena.rdql.parser.ParsedLiteral e)
|
ExpressionTranslator.Result |
translatePattern(Pattern p)
|
ExpressionTranslator.Result |
translateQ_Var(com.hp.hpl.jena.rdql.parser.Q_Var var)
|
ExpressionTranslator.Result |
translateString(java.lang.String s)
|
ExpressionTranslator.Result |
translateString(java.lang.String s,
int resultType)
|
java.lang.String |
translateToString(com.hp.hpl.jena.graph.query.Expression e)
|
ExpressionTranslator.Result |
translateUnary(OperatorMap op,
com.hp.hpl.jena.graph.query.Expression e)
no operator checking is performed |
ExpressionTranslator.Result |
translateValue(com.hp.hpl.jena.rdql.parser.NodeValue val)
|
ExpressionTranslator.Result |
translateVarName(java.lang.String varName)
|
ExpressionTranslator.Result |
translateWorkingVar(com.hp.hpl.jena.rdql.parser.WorkingVar var)
|
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
ConstraintHandler handler
SQLStatementMaker statementMaker
VariableBindings variableBindings
java.util.Map variableNameToNodeConstraint
boolean weaker
int argType
java.util.Map opMap
public static final int NoType
public static final int BoolType
public static final int BitType
public static final int StringType
public static final int NumberType
public static final int UriType
public static final int AnyType
public static final int LeftRightType
public static final int LeftType
public static final int RightType
public static final int SameType
public static java.util.Collection logSqlExpressions
public static final java.lang.String concatenateOp
public static ExpressionTranslator.Result trueBuffer
public static ExpressionTranslator.Result falseBuffer
static final java.lang.String exprBaseURI
Constructor Detail |
public ExpressionTranslator(ConstraintHandler handler, SQLStatementMaker sql)
Method Detail |
public java.lang.String translateToString(com.hp.hpl.jena.graph.query.Expression e)
public ExpressionTranslator.Result translate(com.hp.hpl.jena.graph.query.Expression e)
e
-
Expression
public ExpressionTranslator.Result translateBinary(OperatorMap op, com.hp.hpl.jena.graph.query.Expression e)
public ExpressionTranslator.Result translateUnary(OperatorMap op, com.hp.hpl.jena.graph.query.Expression e)
op
- e
-
public ExpressionTranslator.Result translate(com.hp.hpl.jena.rdql.parser.ParsedLiteral e)
public ExpressionTranslator.Result translateParsedLiteral(com.hp.hpl.jena.rdql.parser.ParsedLiteral e)
public ExpressionTranslator.Result translateString(java.lang.String s)
public ExpressionTranslator.Result translateString(java.lang.String s, int resultType)
public ExpressionTranslator.Result translate(com.hp.hpl.jena.rdql.parser.Q_Var var)
var
-
public ExpressionTranslator.Result translateQ_Var(com.hp.hpl.jena.rdql.parser.Q_Var var)
public ExpressionTranslator.Result translate(com.hp.hpl.jena.graph.query.Expression.Variable var)
public ExpressionTranslator.Result translateExprVariable(com.hp.hpl.jena.graph.query.Expression.Variable var)
public ExpressionTranslator.Result translate(com.hp.hpl.jena.rdql.parser.WorkingVar var)
public ExpressionTranslator.Result translateWorkingVar(com.hp.hpl.jena.rdql.parser.WorkingVar var)
public ExpressionTranslator.Result translateValue(com.hp.hpl.jena.rdql.parser.NodeValue val)
public ExpressionTranslator.Result translateVarName(java.lang.String varName)
public ExpressionTranslator.Result translateNodeConstraint(NodeConstraint c)
public ExpressionTranslator.Result translateColumn(Column col)
public ExpressionTranslator.Result castToString(ExpressionTranslator.Result r)
public ExpressionTranslator.Result translatePattern(Pattern p)
public ExpressionTranslator.Result translateNode(com.hp.hpl.jena.graph.Node n)
public java.util.List translateArgs(com.hp.hpl.jena.graph.query.Expression e, boolean strict, ExpressionTranslator.Result neutral)
e
- the RDQL expressionstrict
- if set, all arguments must be translatable to create a complex SQL expressionneutral
- the neutral element of the current operation
public ExpressionTranslator.Result translate(com.hp.hpl.jena.rdql.parser.Q_LogicalAnd e)
public ExpressionTranslator.Result translateAnd(com.hp.hpl.jena.rdql.parser.Q_LogicalAnd e)
public ExpressionTranslator.Result translate(com.hp.hpl.jena.rdql.parser.Q_LogicalOr e)
public ExpressionTranslator.Result translateOr(com.hp.hpl.jena.rdql.parser.Q_LogicalOr e)
public ExpressionTranslator.Result translate(com.hp.hpl.jena.rdql.parser.Q_UnaryNot e)
public ExpressionTranslator.Result translateNot(com.hp.hpl.jena.rdql.parser.Q_UnaryNot e)
java.lang.String constructURI(java.lang.String className)
java.lang.String opURL(java.lang.Object obj)
OperatorMap putOp(java.lang.String className, java.lang.String sqlOp)
OperatorMap putOp(java.lang.String className, java.lang.String sqlOp, int argTypes)
OperatorMap putOp(java.lang.String className, java.lang.String sqlOp, int argTypes, int returnType)
OperatorMap putOp(java.lang.String className, java.lang.String sqlOp, int leftTypes, int rightTypes, int leftRightConstraint, int returnType)
OperatorMap getSQLOp(java.lang.String className)
OperatorMap getSQLOp(java.lang.Object e)
void setupOperatorMap()
public static ExpressionTranslator.Result newResult(java.lang.String expr, int type)
public static ExpressionTranslator.Result newResult(java.lang.StringBuffer expr, int type)
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |