| Alias | the name of inputs used downstream in the queries. In this case, `a` and `b`. If no alias is specified, the InputName is used as alias; so internally an alias is always defined. | 
      
        
          | Attribute | Attributes of the relations, e.g. `x`, `y`, `q`, `r` and `s`. In order to avoid naming clashes, it is **forbidden** to use attributes without a qualifying alias. | 
      
        
          | AttributeAccess | The pair of alias and attribute, e.g. `('a', 'q')` in the predicate `a.q = 1`. | 
      
        
          | FilterPredicate | A predicate with a single input, e.g. `a.q = 1`. These can be evaluated at ingestion of the inputs or maybe even pushed down into the data sources. | 
      
        
          | InputName | The name of a Input (relation). In the example, `alice` and `bob` are inputs. The system has to know how to get real data from these inputs, which is an orthogonal task to formulating a query. | 
      
        
          | JoinPredicate | A predicate with two inputs, e.g. `a.r = b.s`, here tuples from both relations, `a` and `b` are needed in order to evaluate the predicate |