|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectde.fuberlin.wiwiss.d2rq.rdql.ExpressionTranslator
public class 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
|
static int |
BitType
|
static int |
BoolType
|
static String |
concatenateOp
|
static ExpressionTranslator.Result |
falseBuffer
|
static int |
LeftRightType
|
static int |
LeftType
|
static Collection |
logSqlExpressions
|
static int |
NoType
|
static int |
NumberType
|
static int |
RightType
|
static int |
SameType
|
static int |
StringType
|
static ExpressionTranslator.Result |
trueBuffer
|
static int |
UriType
|
Constructor Summary | |
---|---|
ExpressionTranslator(ConstraintHandler handler,
ConnectedDB database)
|
Method Summary | |
---|---|
ExpressionTranslator.Result |
castToString(ExpressionTranslator.Result r)
|
static String |
expressionToString(com.hp.hpl.jena.graph.query.Expression e)
|
static void |
expressionToStringBuffer(com.hp.hpl.jena.graph.query.Expression e,
StringBuffer b,
String indent)
|
static ExpressionTranslator.Result |
newResult(StringBuffer expr,
int type)
|
static ExpressionTranslator.Result |
newResult(String expr,
int type)
|
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)
|
List |
translateArgs(com.hp.hpl.jena.graph.query.Expression e,
boolean strict,
ExpressionTranslator.Result neutral)
translates an RDQL expression |
ExpressionTranslator.Result |
translateBinary(de.fuberlin.wiwiss.d2rq.rdql.OperatorMap op,
com.hp.hpl.jena.graph.query.Expression e)
|
ExpressionTranslator.Result |
translateColumn(Attribute 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(NodeConstraintImpl 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(String s)
|
ExpressionTranslator.Result |
translateString(String s,
int resultType)
|
String |
translateToString(com.hp.hpl.jena.graph.query.Expression e)
|
ExpressionTranslator.Result |
translateUnary(de.fuberlin.wiwiss.d2rq.rdql.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(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 |
---|
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 Collection logSqlExpressions
public static final String concatenateOp
public static ExpressionTranslator.Result trueBuffer
public static ExpressionTranslator.Result falseBuffer
Constructor Detail |
---|
public ExpressionTranslator(ConstraintHandler handler, ConnectedDB database)
Method Detail |
---|
public static void expressionToStringBuffer(com.hp.hpl.jena.graph.query.Expression e, StringBuffer b, String indent)
public static String expressionToString(com.hp.hpl.jena.graph.query.Expression e)
public 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(de.fuberlin.wiwiss.d2rq.rdql.OperatorMap op, com.hp.hpl.jena.graph.query.Expression e)
public ExpressionTranslator.Result translateUnary(de.fuberlin.wiwiss.d2rq.rdql.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(String s)
public ExpressionTranslator.Result translateString(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(String varName)
public ExpressionTranslator.Result translateNodeConstraint(NodeConstraintImpl c)
public ExpressionTranslator.Result translateColumn(Attribute 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 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)
public static ExpressionTranslator.Result newResult(String expr, int type)
public static ExpressionTranslator.Result newResult(StringBuffer expr, int type)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |