Generation

Code generation from an expression to a database language.

The currently supported languages are:
  • MQL
  • Sparql
  • Dot: generation of graph images mainly for debugging.
quepy.generation.get_code(expression, language)

Given an expression and a supported language, it returns the query for that expression on that language.

MQL Generation

quepy.mql_generation.choose_start_node(e)

Choose a node of the Expression such that no property leading to a data has to be reversed (with !).

quepy.mql_generation.generate_mql(e)

Generates a MQL query for the Expression e.

quepy.mql_generation.paths_from_root(graph, start)

Generates paths from start to every other node in graph and puts it in the returned dictionary paths. ie.: paths_from_node(graph, start)[node] is a list of the edge names used to get to node form start.

quepy.mql_generation.post_order_depth_first(graph, start)

Iterate over the nodes of the graph (is a tree) in a way such that every node is preceded by it’s childs. graph is a dict that represents the Expression graph. It’s a tree too beacuse Expressions are trees. start is the node to use as the root of the tree.

quepy.mql_generation.safely_to_unicode(x)

Given an “edge” (a relation) or “a data” from an Expression graph transform it into a unicode string fitted for insertion into a MQL query.

quepy.mql_generation.to_bidirected_graph(e)

Rewrite the graph such that there are reversed edges for every forward edge. If an edge goes into a data, it should not be reversed.

Sparql Generation

Sparql generation code.

quepy.sparql_generation.adapt(x)
quepy.sparql_generation.escape(string)
quepy.sparql_generation.expression_to_sparql(e, full=False)
quepy.sparql_generation.triple(a, p, b, indentation=0)

Dot Generation

Dot generation code.

quepy.dot_generation.adapt(x)
quepy.dot_generation.dot_arc(a, label, b)
quepy.dot_generation.dot_attribute(a, key)
quepy.dot_generation.dot_fixed_type(a, fixedtype)
quepy.dot_generation.dot_keyword(a, key)
quepy.dot_generation.dot_type(a, t)
quepy.dot_generation.escape(x, add_quotes=True)
quepy.dot_generation.expression_to_dot(e)