anchor.diff:  
   %%
   %% split query to pattern match and filters
  -q_split(#{'_' := Head} = Pattern) ->
  +q_split(#{'@' := Fun, '_' := Head} = Pattern) ->
      lists:foldl(
         fun
         ({Pkey, Jkey}, {P, F} = Acc) when is_atom(Pkey) ->
  
positive.code: 
  %%
  %% return predicate schema (variable binding to keys) 
  schema([S, P]) ->
     [{S, s}, {P, p}];
  schema([S, P, O]) ->
     [{S, s}, {P, p}, {O, o}];
  schema([S, P, O, _]) ->
     [{S, s}, {P, p}, {O, o}];
  schema([S, P, O, _, K]) ->
     [{S, s}, {P, p}, {O, o}, {K, k}].
  
  %%
  
negative.code:          {[{Jkey, Pkey}|P], F}
        end,
        {[], []},
        schema(Fun, Head)
     ).
  
  %%
  