* @return NamedDescription
   */
  public static NamedDescription callDefquery(Cons arguments) {
    { Cons definition = Cons.cons(RDBMS.SYM_RDBMS_DEFQUERY, arguments.concatenate(Stella.NIL, Stella.NIL));
      Symbol relationname = null;
      Cons queryaxioms = Stella.NIL;
      Cons relationoptions = Stella.NIL;

      { Object old$Termsourcebeingparsed$000 = Logic.$TERMSOURCEBEINGPARSED$.get();

        try {
          Native.setSpecial(Logic.$TERMSOURCEBEINGPARSED$, Native.stringify(definition));
          arguments = Logic.normalizeDefrelationArguments(arguments);
          relationname = ((Symbol)(arguments.value));
          { Object [] caller_MV_returnarray = new Object[1];

            queryaxioms = RDBMS.extractRdbmsOptions(relationname, arguments.rest.rest, caller_MV_returnarray);
            relationoptions = ((Cons)(caller_MV_returnarray[0]));
          }
          queryaxioms = Cons.cons(Cons.list$(Cons.cons(RDBMS.SYM_PL_KERNEL_KB_RELATION_SPECIALIST, Cons.cons(relationname, Cons.cons(Cons.cons(RDBMS.SYM_RDBMS_QUERY_SPECIALIST, Stella.NIL), Stella.NIL)))), queryaxioms);
          { Cons relationargs = null;
            Cons columnaxioms = null;

            { Object [] caller_MV_returnarray = new Object[1];

              relationargs = RDBMS.parseColumnSpecs(relationname, arguments.rest.value, caller_MV_returnarray);
              columnaxioms = ((Cons)(caller_MV_returnarray[0]));
            }
            arguments.secondSetter(relationargs);
            queryaxioms.concatenate(columnaxioms, Stella.NIL);
          }
          arguments.rest.rest = relationoptions.concatenate(Cons.list$(Cons.cons(RDBMS.KWD_AXIOMS, Cons.cons(queryaxioms, Cons.cons(Stella.NIL, Stella.NIL)))), Stella.NIL);
          return (Logic.callDefrelation(arguments));

        } finally {
          Logic.$TERMSOURCEBEINGPARSED$.set(old$Termsourcebeingparsed$000);
        }
      }
    }
  }