====== MS Predicate ====== The MSGraph have a specific predicate for the [[:01_user_documentation:07_rgg_xl:02_xl:03_query:01_predicate:02_path|path patterns]]. It will try to implicitly match path pattern between the different scales of the other predicates. ===== Scale matching ===== For the MSGraph, the spacing predicate (implicit path pattern) have two implicit usages: - The matched nodes between the predicate belong to the same scale: the spacing pattern works as in a [[:01_user_documentation:07_rgg_xl:03_query_graph:03_rgggraph|rgg graph model]] (i.e. as defined in [[:01_user_documentation:07_rgg_xl:02_xl:03_query:01_predicate:02_path:01_implicit|implicit path pattern]]). - Otherwise, the predicate use [[:01_user_documentation:06_graph:01_edge:04_refinement|refinement edges]] as default connection. (Even with the implicit "branch" edge '['). To define if nodes type belong to the same scale, the [[:01_user_documentation:06_graph:03_graphs:01_project_graph:03_type_graph|type graph]] is used. ===== Examples ===== // graph with two nodes connected by a refinement edges [Axiom ==> A /> B;] derive(); // application of waiting rules MSGraph msgraph = MSGraph.get (graph()) ; // get an instance of a MSGraph // use the MSGraph as query model msgraph.[A b:B ::> println(b);]; // the node B is found because Node "SPACE" Node look for refinement edges as A and B are not defined in the same scale