Beispiel #1
0
        public SimpleQueryBuilder()
        {
            itsQuery            = new Query();
            itsQuery.QueryGroup = new QueryGroupAnd();

            itsGroupRequired    = new QueryGroupPatterns();
            itsGroupOptional    = new QueryGroupPatterns();
            itsGroupConstraints = new QueryGroupConstraints();

            ((QueryGroupAnd)itsQuery.QueryGroup).Add(itsGroupRequired);
            ((QueryGroupAnd)itsQuery.QueryGroup).Add(new QueryGroupOptional(itsGroupOptional));
            ((QueryGroupAnd)itsQuery.QueryGroup).Add(itsGroupConstraints);
        }
        public void EqualsComparesGroups()
        {
            QueryGroupConstraints group1 = new QueryGroupConstraints();
            QueryGroupConstraints group2 = new QueryGroupConstraints();
            QueryGroupConstraints group3 = new QueryGroupConstraints();

            group1.Add(new Constraint(new VariableExpression(new Variable("foo"))));
            group2.Add(new Constraint(new VariableExpression(new Variable("foo"))));
            group3.Add(new Constraint(new VariableExpression(new Variable("bar"))));

            Assert.IsTrue(group1.Equals(group2), "group1 should equal group2");
            Assert.IsTrue(!group1.Equals(group3), "group1 should not equal query3");
        }
        public void GetHashCodeUsesGroups()
        {
            QueryGroupConstraints group1 = new QueryGroupConstraints();
            QueryGroupConstraints group2 = new QueryGroupConstraints();
            QueryGroupConstraints group3 = new QueryGroupConstraints();

            group1.Add(new Constraint(new VariableExpression(new Variable("foo"))));
            group2.Add(new Constraint(new VariableExpression(new Variable("foo"))));
            group3.Add(new Constraint(new VariableExpression(new Variable("bar"))));

            Assert.IsTrue(group1.GetHashCode() == group2.GetHashCode(), "group1 should have same hash code as group2");
            Assert.IsTrue(group1.GetHashCode() != group3.GetHashCode(), "group1 should not have same hash code as query2");
        }
Beispiel #4
0
 public void visit(QueryGroupConstraints group)
 {
     foreach (SemPlan.Spiral.Core.Constraint constraint in group.Constraints)
     {
         if (constraint.Expression is IsLiteral && ((IsLiteral)constraint.Expression).SubExpression is VariableExpression)
         {
             string variableName = ((VariableExpression)((IsLiteral)constraint.Expression).SubExpression).Variable.Name;
             itsWhereTerms.Add("(nt_" + variableName + "='p' OR nt_" + variableName + "='t')");
         }
         else if (constraint.Expression is IsIri && ((IsIri)constraint.Expression).SubExpression is VariableExpression)
         {
             string variableName = ((VariableExpression)((IsIri)constraint.Expression).SubExpression).Variable.Name;
             itsWhereTerms.Add("nt_" + variableName + "='u'");
         }
         else if (constraint.Expression is IsBlank && ((IsBlank)constraint.Expression).SubExpression is VariableExpression)
         {
             string variableName = ((VariableExpression)((IsBlank)constraint.Expression).SubExpression).Variable.Name;
             itsWhereTerms.Add("nt_" + variableName + "='b'");
         }
         else if (constraint.Expression is Bound)
         {
             string variableName = ((Bound)constraint.Expression).Variable.Name;
             if (itsVariableFirstMentions.Contains(variableName))
             {
                 itsWhereTerms.Add(itsVariableFirstMentions[variableName] + " IS NOT NULL");
             }
             else
             {
                 MarkAsNotFeasible(" Bound constraint applied to variable '" + variableName + "' before it is first mentioned");
             }
         }
         else
         {
             itsIsMappable = false;
         }
     }
 }
Beispiel #5
0
 public void visit(QueryGroupConstraints group)
 {
 }