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"); }
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; } } }
public void visit(QueryGroupConstraints group) { }