User Tools

Site Tools


groimp-platform:xl-query

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
groimp-platform:xl-query [2025/01/24 09:00] – [Field based conditions] Timgroimp-platform:xl-query [2025/01/24 09:51] (current) – [Nested Transitive closures] Tim
Line 55: Line 55:
 | A(x,y),(x>y) | a4 | both fields are query variables used in the same condition | | A(x,y),(x>y) | a4 | both fields are query variables used in the same condition |
  
 +The condition part behind the comma can be replaced by any boolean condition, including predefined functions that return a boolean value. 
 +The query variables defined here can also be used in the production of the rewriting rule or in followup expressions of a lambda expression.
 ===== Queries as query conditions ===== ===== Queries as query conditions =====
  
 +As said above a query condition can be any boolean condition, this includes also queries and lambda expressions, as long as the return a boolean value for example the [[groimp-platform:xl-builtin-methods|Analytical Operator]] empty(), here used to find the last F of each branch and remove it using a [[:groimp-platform:xl-rules |SPO rule]].  
 <code> <code>
-f:F,(empty((*f (-->)F*) ==>>;+[f:F,(empty((*f (-->)F*))) ==>>;
 +</code>
  
 +Or a query as a part of a boolean condition, for example used with the count operator to get the order of an internode in a tree model:
 +<code>
 +(*f:F,(count((*f ((<)*<+)+F*))==0)*) //all F of order 0
 +(*f:F,(count((*f ((<)*<+)+F*))==1)*) //all F of order 1
 </code> </code>
  
-===== Nested Transitive closures =====+The inner query of this is explained below. 
 + 
 +===== Transitive closures ===== 
 + 
 +As shown above transitive closure can be used to define a range of edges between two nodes, e.g. ''%% A (>)* B %%'' for all B with A successor of an A. This can be combined with other edges: ''%%  A (>)* +> B %%'' to show  
 + 
 +| query  | description | 
 +| ''%% A (>)+ B %%'' | All B's that have a A above connected only by successor edges |  
 +| ''%% A (>)* +> B %%'' | All B's that have a A above connected only by successor edges and one branch-edge directly before the B|  
 +| ''%% A ((>)* +>)+ B %%'' | All B's where the edge pattern of as many successors and one branch, comes at least once between the B and an A|  
 +| ''%% A (>)* +> (>)* B %%'' | As many sucessors followed by a branch followed by as many successors | 
 +| ''%% A (-->)* C (-->)* B %%''| All B' that have an ancestor of the type A and an ancestor of the type C with C between the A and the B | 
 + 
 +Using transitive closure it is possible to find the same node several times!!! for instance  in a graph  
 + 
 +%%Axiom ==> A A A B;%%
  
 +the pattern (*A (>)* B*) would return B three times.
  
groimp-platform/xl-query.1737705656.txt.gz · Last modified: 2025/01/24 09:00 by Tim