3.2.15.2. rule/CompositionExpr.hpp¶
In the rule::RCExp namespace the data structures and operators for representing rule composition expressions are defined.
An expression can be evaluated through the method rule::Composer::eval(). The result of an expression
is a list of rules.
See also [AFMS-RC], [AFMS-RC-AtomMap], and [AFMS-RC-Matrix] for details on how these expressions are computed internally, and further examples of how they can be used to solve particular problems.
- 
class rule::RCExp::Union¶
- When evaluated, the subexpressions are evaluated and the results are combined. The combination is either simple concatenation of lists, or taking the union of the subresults. - 
Union(std::vector<Expression> exps)¶
- Throws:
- LogicErrorif exps.empty().
 
 - 
const std::vector<Expression> &getExpressions() const¶
 
- 
Union(std::vector<Expression> exps)¶
- 
class rule::RCExp::Bind¶
- When evaluated, returns a list with a single rule, \(\emptyset \leftarrow \emptyset \rightarrow G\), for the given graph \(G\). - Throws:
- LogicErrorif !g.
 
 
- 
class rule::RCExp::Id¶
- When evaluated, returns a list with a single rule, \(G \leftarrow G \rightarrow G\), for the given graph \(G\). - Throws:
- LogicErrorif !g.
 
 
- 
class rule::RCExp::Unbind¶
- When evaluated, returns a list with a single rule, \(G \leftarrow \emptyset \rightarrow \emptyset\), for the given graph \(G\). - Throws:
- LogicErrorif !g.
 
 
- 
class rule::RCExp::Expression¶
- A class containing any type of the rule composition expression. That is, it acts as a variant. - 
Expression(Union u)¶
- 
Expression(Bind bind)¶
- 
Expression(Id id)¶
- 
Expression(Unbind unbind)¶
- 
Expression(ComposeCommon compose)¶
- 
Expression(ComposeParallel compose)¶
- 
Expression(ComposeSub compose)¶
- 
Expression(ComposeSuper compose)¶
- Throws:
- LogicErrorif !r.
 
 - 
friend std::ostream &operator<<(std::ostream &s, const Expression &exp)¶
 
- 
Expression(Union u)¶
- 
class rule::RCExp::ComposeCommon¶
- When evaluated, evaluate the first and second expressions to obtain list of rules \(P_1\) and \(P_2\). For each pair of rules \(p_1 = (L_1\leftarrow K_1\rightarrow R_1) \in P_1\) and \(p_2 = (L_2\leftarrow K_2\rightarrow R_2) \in P_2\), compose them by common subgraphs of \(R_1\) and \(L_2\), possibly limited to connected subgraphs or to the subgraphs of maximum size. By default the empty subgraph is not considered, but can be enabled to be. - 
ComposeCommon(Expression first, Expression second, bool maximum, bool connected, bool includeEmpty)¶
 - 
friend std::ostream &operator<<(std::ostream &s, const ComposeCommon &c)¶
 - 
Expression first¶
- 
Expression second¶
 
- 
ComposeCommon(Expression first, Expression second, bool maximum, bool connected, bool includeEmpty)¶
- 
class rule::RCExp::ComposeParallel¶
- When evaluated, evaluate the first and second expressions to obtain list of rules \(P_1\) and \(P_2\). For each pair of rules \(p_1 = (L_1\leftarrow K_1\rightarrow R_1) \in P_1\) and \(p_2 = (L_2\leftarrow K_2\rightarrow R_2) \in P_2\), compose them by the empty overlap of \(R_1\) and \(L_2\). - 
ComposeParallel(Expression first, Expression second)¶
 - 
friend std::ostream &operator<<(std::ostream &s, const ComposeParallel &c)¶
 - 
Expression first¶
- 
Expression second¶
 
- 
ComposeParallel(Expression first, Expression second)¶
- 
class rule::RCExp::ComposeSub¶
- When evaluated, evaluate the first and second expressions to obtain list of rules \(P_1\) and \(P_2\). For each pair of rules \(p_1 = (L_1\leftarrow K_1\rightarrow R_1) \in P_1\) and \(p_2 = (L_2\leftarrow K_2\rightarrow R_2) \in P_2\), compose them by common subgraphs of \(R_1\) and \(L_2\) such that \(R_1\) is the common subgraph, i.e., that \(R_1\) is matched as a subgraph of \(L_2\). - If - allowPartialis set true, then each non-empty subset of connected components of \(R_1\) are matched as a subgraph of \(L_2\).- 
ComposeSub(Expression first, Expression second, bool allowPartial)¶
 - 
friend std::ostream &operator<<(std::ostream &s, const ComposeSub &c)¶
 - 
Expression first¶
- 
Expression second¶
 - 
bool allowPartial¶
 
- 
ComposeSub(Expression first, Expression second, bool allowPartial)¶
- 
class rule::RCExp::ComposeSuper¶
- When evaluated, evaluate the first and second expressions to obtain list of rules \(P_1\) and \(P_2\). For each pair of rules \(p_1 = (L_1\leftarrow K_1\rightarrow R_1) \in P_1\) and \(p_2 = (L_2\leftarrow K_2\rightarrow R_2) \in P_2\), compose them by common subgraphs of \(R_1\) and \(L_2\) such that \(L_2\) is the common subgraph, i.e., that \(L_2\) is matched as a subgraph of \(R_1\). - If - allowPartialis set true, then each non-empty subset of connected components of \(L_2\) are matched as a subgraph of \(R_1\).- 
ComposeSuper(Expression first, Expression second, bool allowPartial, bool enforceConstraints)¶
 - 
friend std::ostream &operator<<(std::ostream &s, const ComposeSuper &c)¶
 - 
Expression first¶
- 
Expression second¶
 
- 
ComposeSuper(Expression first, Expression second, bool allowPartial, bool enforceConstraints)¶