public bool ValidateQuery(IntermediateQuery query, out string message)
 {
     if (query.ExactForm == null && query.Tokens.Count() == 0)
     {
         message = "empty query";
         return(false);
     }
     if (query.ExactForm != null && query.Tokens.Count() > 0)
     {
         message = "message can't contain exact form and parameter tokens at the same time";
         return(false);
     }
     if (query.ExactForm != null)
     {
         message = "";
         return(true);
     }
     if (!IsValidTokenCount(query.Tokens))
     {
         message = "parameter token count must be in range 1..2";
         return(false);
     }
     if (!IsValidParameterTypes(query.Tokens))
     {
         message = "parameters should be all grammar or all semantic";
         return(false);
     }
     if (!IsValidRangeParameters(query.Tokens))
     {
         message = "invalid range parameters";
         return(false);
     }
     message = "";
     return(true);
 }
Exemple #2
0
 private Query TranslateExactQuery(IntermediateQuery intQuery)
 {
     return(new ExactQuery
     {
         ExactForm = intQuery.ExactForm,
     });
 }
        public IntermediateQuery ParseParameterQuery(string query)
        {
            var queryObj = new IntermediateQuery();

            queryObj.Tokens = ParseParameterTokens(query);

            return(queryObj);
        }
        public List <QueryResult> ExecuteQuery(IntermediateQuery intQuery)
        {
            if (!validator.ValidateQuery(intQuery, out string message))
            {
                throw new Exception($"Unsupported query: {message}");
            }
            Query query = translator.TranslateQuery(intQuery);

            return(client.SendQuery(query));
        }
Exemple #5
0
 public Query TranslateQuery(IntermediateQuery intQuery)
 {
     if (IsExactSearchQuery(intQuery))
     {
         return(TranslateExactQuery(intQuery));
     }
     else
     {
         return(TranslatePairQuery(intQuery));
     }
 }
        private bool TryParseExactQuery(string query, out IntermediateQuery queryObj)
        {
            Regex exactRegex = new Regex(exactFormPattern);

            queryObj = new IntermediateQuery();
            if (!exactRegex.IsMatch(query))
            {
                return(false);
            }

            var    match     = exactRegex.Match(query);
            string exactForm = match.Groups[1].Value;

            queryObj.ExactForm = exactForm;
            return(true);
        }
Exemple #7
0
        public List <QueryResult> ExecuteQuery(IntermediateQuery query, string driverName)
        {
            var driver = ResolveDriver(driverName);

            if (driver == null)
            {
                throw new UnknownDriverException(driverName, "Unknown driver");
            }
            List <QueryResult> results;

            try
            {
                results = driver.ExecuteQuery(query);
            }
            catch (Exception e)
            {
                throw new Exception($"Driver failed to execute query: {e.Message}", e);
            }
            return(results);
        }
Exemple #8
0
        private Query TranslatePairQuery(IntermediateQuery intQuery)
        {
            var pairQuery = new PairQuery();

            if (IsLemmaQuery(intQuery))
            {
                pairQuery.Type     = PairQueryType.LemmaPair;
                pairQuery.First    = intQuery.Tokens[0].SemanticParameters[0];
                pairQuery.Second   = intQuery.Tokens[1].SemanticParameters[0];
                pairQuery.MinRange = intQuery.Tokens[1].MinRange;
                pairQuery.MaxRange = intQuery.Tokens[1].MaxRange;
            }
            else
            {
                pairQuery.Type     = PairQueryType.TagPair;
                pairQuery.First    = intQuery.Tokens[0].GrammarParameters[0];
                pairQuery.Second   = intQuery.Tokens[1].GrammarParameters[0];
                pairQuery.MinRange = intQuery.Tokens[1].MinRange;
                pairQuery.MaxRange = intQuery.Tokens[1].MaxRange;
            }
            return(pairQuery);
        }
Exemple #9
0
 private bool IsLemmaQuery(IntermediateQuery intQuery)
 {
     return(intQuery.Tokens[0].SemanticParameters.Count() > 0);
 }
Exemple #10
0
 private bool IsExactSearchQuery(IntermediateQuery query)
 {
     return(query.ExactForm != "" && query.ExactForm != null);
 }